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!!!