[Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

Send an email from ASP.NET Page

Posted on 2012-03-22
8
Medium Priority
?
336 Views
Last Modified: 2012-04-10
Hi,

I want to send email thru a website application I am developing. I need the code for this, and would like to know how to place SMTP host name, email-id, and password in the code from where the mail must go.

Thanks.
0
Comment
Question by:sanjay-gandhi
  • 3
  • 3
  • 2
8 Comments
 
LVL 14

Expert Comment

by:binaryevo
ID: 37752652
internal class Mailer
    {
        private const int Timeout = 180000;

        private readonly string _host;
        private readonly int _port;
        private readonly string _user;
        private readonly string _pass;
        private readonly bool _ssl;

        public string Sender { get; set; }
        public string Recipient { get; set; }
        public string Subject { get; set; }
        public string Body { get; set; }
        public string AttachmentFile { get; set; }

        public Mailer()
        {
            _host = ConfigurationManager.AppSettings["MailServer"];
            _port = int.Parse(ConfigurationManager.AppSettings["Port"]);
            _user = ConfigurationManager.AppSettings["MailAuthUser"];
            _pass = ConfigurationManager.AppSettings["MailAuthPass"];
            _ssl = Convert.ToBoolean(ConfigurationManager.AppSettings["EnableSSL"]);
        }

        public void Send()
        {
            // We do not catch the error here... let it pass direct to the caller
            Attachment att = null;
            var message = new MailMessage(Sender, Recipient, Subject, Body) {IsBodyHtml = true};
            var smtp = new SmtpClient(_host, _port);
            
            if (!String.IsNullOrEmpty(AttachmentFile))
            {
                if (File.Exists(AttachmentFile))
                {
                    att = new Attachment(AttachmentFile);
                    message.Attachments.Add(att);
                }
            }

            if (_user.Length > 0 && _pass.Length > 0)
            {
                smtp.UseDefaultCredentials = false;
                smtp.Credentials = new NetworkCredential(_user, _pass);
                smtp.EnableSsl = _ssl;
            }

            smtp.Timeout = Timeout;
            smtp.Send(message);

            if (att != null)
                att.Dispose();
            message.Dispose();
            smtp.Dispose();
        }
    }

Open in new window

0
 
LVL 9

Expert Comment

by:gery128
ID: 37753050
Apart from the solution suggested by binaryevo, I would like to add one more thing.

Encrypt your <appSettings> section of Web.Config for better security.
0
 
LVL 14

Expert Comment

by:binaryevo
ID: 37753102
Agreed with gery128, security is of utmost importance.
0
Fill in the form and get your FREE NFR key NOW!

Veeam is happy to provide a FREE NFR server license to certified engineers, trainers, and bloggers.  It allows for the non‑production use of Veeam Agent for Microsoft Windows. This license is valid for five workstations and two servers.

 

Author Comment

by:sanjay-gandhi
ID: 37753628
Your code must be fine, but its giving me some errors. Let me tell you I am quite new to ASP.NET, which is why also I need help. So please tell me why am I getting these errors, attached.
Errors.png
0
 
LVL 14

Expert Comment

by:binaryevo
ID: 37753762
1)  Your button, BtCheckMail doesnt have an event associated with the button click.  Open up
design view of your webform and double click the button to resolve this.  It will take you to codebehind where the event will be created.

2)  Add the following to the top of the class in the using statements section:

using System.Net.Mail;

Open in new window

0
 

Author Comment

by:sanjay-gandhi
ID: 37757162
Sorry but I still find the errors appearing. I am attaching the code and the errors, plus I have also opened the event on Button, but if I try to use Send over there, it does not accept. Yes I've yet not added the SMTP link, which I can only try once my code is error free.

Thanks.
SendMail.zip
0
 
LVL 9

Accepted Solution

by:
gery128 earned 2000 total points
ID: 37764554
Hi Sanjay,
Can you try this code for "Check Mail.aspx.cs"?
What you need to do is, replace below code with your "Check Mail.aspx.cs" file code and then compile.
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Net.Mail;
using System.IO;
using System.Net;

public partial class Check_Mail : System.Web.UI.Page
{
    internal class Mailer
    {
        private const int Timeout = 180000;

        private readonly string _host;
        private readonly int _port;
        private readonly string _user;
        private readonly string _pass;
        private readonly bool _ssl;

        public string Sender { get; set; }
        public string Recipient { get; set; }
        public string Subject { get; set; }
        public string Body { get; set; }
        public string AttachmentFile { get; set; }

        public Mailer()
        {
            _host = ConfigurationManager.AppSettings["MailServer"];
            _port = int.Parse(ConfigurationManager.AppSettings["Port"]);
            _user = ConfigurationManager.AppSettings["MailAuthUser"];
            _pass = ConfigurationManager.AppSettings["MailAuthPass"];
            _ssl = Convert.ToBoolean(ConfigurationManager.AppSettings["EnableSSL"]);
        }

        public void Send()
        {
            // We do not catch the error here... let it pass direct to the caller
            Attachment att = null;
            var message = new MailMessage(Sender, Recipient, Subject, Body) { IsBodyHtml = true };
            var smtp = new SmtpClient(_host, _port);

            if (!String.IsNullOrEmpty(AttachmentFile))
            {
                if (File.Exists(AttachmentFile))
                {
                    att = new Attachment(AttachmentFile);
                    message.Attachments.Add(att);
                }
            }

            if (_user.Length > 0 && _pass.Length > 0)
            {
                smtp.UseDefaultCredentials = false;
                smtp.Credentials = new NetworkCredential(_user, _pass);
                smtp.EnableSsl = _ssl;
            }

            smtp.Timeout = Timeout;
            smtp.Send(message);

            if (att != null)
                att.Dispose();
            message.Dispose();
            smtp = null;
        }
    }
    protected void BtCheckMail_Click(object sender, EventArgs e)
    {
        /*-- This is my BtCheckMail event, what code comes here --*/
    }
}

Open in new window

0
 

Author Closing Comment

by:sanjay-gandhi
ID: 37828831
Thanks, sorry for delayed response. Got busy travelling and in an assignment.
My programmer could make really good use of it. Works, thanks.
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Simulator games are perfect for generating sample realistic data streams, especially for learning data analysis. It is even useful for demoing offerings such as Azure stream analytics, PowerBI etc.
Hello there! As a developer I have modified and refactored the unit tests which was written by fellow developers in the past. On the course, I have gone through various misconceptions and technical challenges when it comes to implementation. I would…
Please read the paragraph below before following the instructions in the video — there are important caveats in the paragraph that I did not mention in the video. If your PaperPort 12 or PaperPort 14 is failing to start, or crashing, or hanging, …
In a question here at Experts Exchange (https://www.experts-exchange.com/questions/29062564/Adobe-acrobat-reader-DC.html), a member asked how to create a signature in Adobe Acrobat Reader DC (the free Reader product, not the paid, full Acrobat produ…
Suggested Courses
Course of the Month20 days, 10 hours left to enroll

868 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question