Sending email in ASP.NET
Many times I tried to send an email through .net. Although there are many posts still contains to send an email through .net. But in this article I have created a class which have differenet methods like getSMTPInfo() and MailConfiguration(string to, string from, string cc, string bcc) and SendMail(string subject, string emailBody)
Let me explains you what these methods does.
/// <summary>
/// This Method gets the all SMTP Information
/// </summary>
GetSMTPInfo()
{
System.Collections.Hashtable section;
System.Collections.IDictionaryEnumerator
enumerator;
try
{
section = (System.Collections.Hashtable)
ConfigurationManager.GetSection("ReportsEmail/SMTP");
enumerator = section.GetEnumerator();
while (enumerator.MoveNext())
{
if (enumerator.Entry.Key.ToString() ==
"Host")
{
SMTPHost = enumerator.Entry.Value.ToString();
}
else if (enumerator.Entry.Key.ToString()
== "Port")
{
if (enumerator.Entry.Value.ToString() !=
"")
{
int.TryParse(enumerator.Entry.Value.ToString(),
out port);
}
}
else if (enumerator.Entry.Key.ToString()
== "UserName")
{
smtpuser = enumerator.Entry.Value.ToString();
}
else if (enumerator.Entry.Key.ToString()
== "Password")
{
smtppass = enumerator.Entry.Value.ToString();
}
else
if (enumerator.Entry.Key.ToString() ==
"EnableSSL") {
int value = 0;
int.TryParse(enumerator.Entry.Value.ToString(),
out value);
if (value == 1)
enablessl
= true;
else
enablessl = false;
}
}
if (message.To.Count < 1)
{
return;
}
message.From =
new MailAddress(this.from);
if (this.cc !=
"")
{
string[] multipleMailArraycc =
this.cc.Split(',');
if (multipleMailArraycc !=
null && multipleMailArraycc.Length > 0)
{
for (int z = 0; z <
multipleMailArraycc.Length; z++)
{
if (multipleMailArraycc[z].Trim() !=
"")Z
{
message.CC.Add(multipleMailArraycc[z].Trim());
}
}
}
if (this.bcc !=
"")
{
string[] multiplebcc =
this.bcc.Split(',');
if
(multiplebcc != null && multiplebcc.Length > 0)
{
for (int z = 0; z <
multiplebcc.Length; z++)
{
if (multiplebcc[z].Trim() !=
"")
{
message.Bcc.Add(multiplebcc[z].Trim());
}
}
}
}
//message.To.Add(this.to);
//message.From = new MailAddress(this.from);
//if (this.cc != "") message.CC.Add(this.cc);
//if (this.bcc != "") message.Bcc.Add(this.bcc);
message.Subject = subject;
message.IsBodyHtml = true;
message.Body =
emailBody;
SmtpClient mailClient =
new SmtpClient(this.SMTPHost);
if (this.port >
0)
{
mailClient.Port = this.port;
}
if (this.isDefaultCredential
== false)
{
mailClient.UseDefaultCredentials = false;
mailClient.Credentials = basicAuthenticationInfo;
}
else
{
mailClient.UseDefaultCredentials = true;
}
}
catch (Exception
ex)
{
throw ex;
}
}
/// <summary>
/// This method gets the Configuration Details of the Mail
/// </summary>
/// <param name="to">to addresses separated by semicolon</param>
/// <param name="from">from address</param>
/// <param name="cc">cc addresses separated by semicolon</param>
/// <param name="bcc">bcc addresses separated by semicolon</param>
MailConfiguration(string to, string from, string cc, string bcc):
{
this.to
= to;
this.from = from;
this.cc
= cc;
this.bcc = bcc;
getSMTPInfo();
if (smtpuser != ""
&& smtppass != "")
{
this.basicAuthenticationInfo =
new
NetworkCredential(smtpuser, smtppass);
this.isDefaultCredential =
false;
}
else
{
this.isDefaultCredential =
true;
}
}
/// <summary>
/// This Method send a mail to the specified Receipient list
/// </summary>
/// <param name="bodyDetail"></param>
SendMail(string
subject, string emailBody)
{
MailMessage
message = new
MailMessage();
try
{
string[] multipleMailArray =
this.to.Split(',');
if (multipleMailArray !=
null && multipleMailArray.Length > 0)
{
for (int z = 0;
z < multipleMailArray.Length; z++)
{
if (multipleMailArray[z].Trim() != "")
{
message.To.Add(multipleMailArray[z].Trim());
}
}
}
mailClient.EnableSsl = this.enablessl;
mailClient.Send(message);
}
catch (Exception
ex)
{
throw ex;
}
}
In the Web.Config file,We need to add the Section group for SMTP Configurations inside Configsections tag.
<sectionGroup
name="ReportsEmail">
<section
name
="SMTP"
type ="System.Configuration.SingleTagSectionHandler"/>
</sectionGroup>
Again As we have given the name of the section name as ReportsEmail
In the ReportEmail section tags We need to add the SMTP configurations
<ReportsEmail>
<SMTP
Host="smtp.gmail.com"
//give the name of the Host name
UserName="[email protected]"
Password="Password"
Port="25"
EnableSSL="1">
</SMTP>
</ReportsEmail>
and Again if you
want to send a mail on a click of the Button,We just need to create an instance
of the mail Configuration Class and call that method SendMail with instance.
Thats it!!!

Join the conversation! Your thoughts help the community grow.