Follow the steps:
Step 1: Create email sending class
public static bool SendMail(string mailTo, string mailFrom, string mailSubject, string filepath, bool isHtml, ListDictionary replacements)
{
bool isSend = false;
try
{
string mailBody = string.Empty;
if (!string.IsNullOrEmpty(filepath))
{
string templatePath = ConfigurationManager.AppSettings["NotificationTemplatePath"] + filepath;
using (StreamReader sr = new StreamReader(templatePath))
{
mailBody = sr.ReadToEnd();
}
}
else
{
mailBody = mailSubject;
}
if (!string.IsNullOrEmpty(mailBody))
{
string mailServer = Convert.ToString(ConfigurationManager.AppSettings["SMTPServer"]);
string username = Convert.ToString(ConfigurationManager.AppSettings["SMTP_Username"]);
string password = Convert.ToString(ConfigurationManager.AppSettings["SMTP_Password"]);
int portAddress = 0;
portAddress = Convert.ToInt32(ConfigurationManager.AppSettings["SMTP_Port"]);
bool useDefaultCredentials = Convert.ToBoolean(ConfigurationManager.AppSettings["SMTP_UseDefaultCredentials"]);
System.Net.Mail.MailMessage mailmsg = new System.Net.Mail.MailMessage();
MailAddress mailFromAdrs = new MailAddress(mailFrom);
mailmsg.From = mailFromAdrs;
mailmsg.To.Add(mailTo);
if (replacements != null)
{
IEnumerator iEnumReplacements = replacements.GetEnumerator();
bool hasValues = iEnumReplacements.MoveNext();
DictionaryEntry lstReplacements;
while (hasValues)
{
lstReplacements = (DictionaryEntry)iEnumReplacements.Current;
mailSubject = mailSubject.Replace(lstReplacements.Key.ToString(), lstReplacements.Value.ToString());
mailBody = mailBody.Replace(lstReplacements.Key.ToString(), lstReplacements.Value.ToString());
hasValues = iEnumReplacements.MoveNext();
}
}
mailmsg.Subject = mailSubject;
mailmsg.Body = mailBody;
mailmsg.IsBodyHtml = isHtml;
NetworkCredential SMTPUserInfo = new NetworkCredential(username, password);
SmtpClient smtpclient = new SmtpClient();
smtpclient.Host = mailServer;
if (portAddress > 0)
smtpclient.Port = portAddress;
smtpclient.UseDefaultCredentials = false;
if (useDefaultCredentials)
smtpclient.UseDefaultCredentials = true;
else
smtpclient.Credentials = SMTPUserInfo;
smtpclient.EnableSsl = true;
smtpclient.Send(mailmsg);
isSend = true;
}
else
isSend = false;
}
catch (Exception ex)
{
isSend = false;
}
return isSend;
}
Step 2: Call the function from controller
ListDictionary replacements = new ListDictionary();
string mailTo = _BudgetThreshold.EmailAddress;
string mailFrom = ConfigurationManager.AppSettings["MailFrom"];
string mailSubject = "Current Usage Notification";
string emailTemplate = "BudgetThrasholdNotification.htm";
replacements["[Name]"] = "Test@test.com";
bool IsSent = EmailHelper.SendMail(mailTo, mailFrom, mailSubject, emailTemplate, true, replacements);
Step 3: Create html template "BudgetThrasholdNotification.htm"
<html>
<head>
<title>Welcome</title>
</head>
<body>
Dear [Name],<br />
<br />
Thanks & Regards,<br />
</body>
</html>
Step 4: smtp4dev is great tool for testing email locally.
Step 5: web.config
<add key="SMTPServer" value="smtp.gmail.com" />
<add key="SMTP_Username" value="" />
<add key="SMTP_Password" value="" />
<add key="SMTP_Port" value="0" />
<add key="MailFrom" value="noreply@gmail.com" />
<add key="SMTP_UseDefaultCredentials" value="true" />
<add key="NotificationTemplatePath" value="C:\TestProject\EmailTemplates\" />
Step 1: Create email sending class
public static bool SendMail(string mailTo, string mailFrom, string mailSubject, string filepath, bool isHtml, ListDictionary replacements)
{
bool isSend = false;
try
{
string mailBody = string.Empty;
if (!string.IsNullOrEmpty(filepath))
{
string templatePath = ConfigurationManager.AppSettings["NotificationTemplatePath"] + filepath;
using (StreamReader sr = new StreamReader(templatePath))
{
mailBody = sr.ReadToEnd();
}
}
else
{
mailBody = mailSubject;
}
if (!string.IsNullOrEmpty(mailBody))
{
string mailServer = Convert.ToString(ConfigurationManager.AppSettings["SMTPServer"]);
string username = Convert.ToString(ConfigurationManager.AppSettings["SMTP_Username"]);
string password = Convert.ToString(ConfigurationManager.AppSettings["SMTP_Password"]);
int portAddress = 0;
portAddress = Convert.ToInt32(ConfigurationManager.AppSettings["SMTP_Port"]);
bool useDefaultCredentials = Convert.ToBoolean(ConfigurationManager.AppSettings["SMTP_UseDefaultCredentials"]);
System.Net.Mail.MailMessage mailmsg = new System.Net.Mail.MailMessage();
MailAddress mailFromAdrs = new MailAddress(mailFrom);
mailmsg.From = mailFromAdrs;
mailmsg.To.Add(mailTo);
if (replacements != null)
{
IEnumerator iEnumReplacements = replacements.GetEnumerator();
bool hasValues = iEnumReplacements.MoveNext();
DictionaryEntry lstReplacements;
while (hasValues)
{
lstReplacements = (DictionaryEntry)iEnumReplacements.Current;
mailSubject = mailSubject.Replace(lstReplacements.Key.ToString(), lstReplacements.Value.ToString());
mailBody = mailBody.Replace(lstReplacements.Key.ToString(), lstReplacements.Value.ToString());
hasValues = iEnumReplacements.MoveNext();
}
}
mailmsg.Subject = mailSubject;
mailmsg.Body = mailBody;
mailmsg.IsBodyHtml = isHtml;
NetworkCredential SMTPUserInfo = new NetworkCredential(username, password);
SmtpClient smtpclient = new SmtpClient();
smtpclient.Host = mailServer;
if (portAddress > 0)
smtpclient.Port = portAddress;
smtpclient.UseDefaultCredentials = false;
if (useDefaultCredentials)
smtpclient.UseDefaultCredentials = true;
else
smtpclient.Credentials = SMTPUserInfo;
smtpclient.EnableSsl = true;
smtpclient.Send(mailmsg);
isSend = true;
}
else
isSend = false;
}
catch (Exception ex)
{
isSend = false;
}
return isSend;
}
Step 2: Call the function from controller
ListDictionary replacements = new ListDictionary();
string mailTo = _BudgetThreshold.EmailAddress;
string mailFrom = ConfigurationManager.AppSettings["MailFrom"];
string mailSubject = "Current Usage Notification";
string emailTemplate = "BudgetThrasholdNotification.htm";
replacements["[Name]"] = "Test@test.com";
bool IsSent = EmailHelper.SendMail(mailTo, mailFrom, mailSubject, emailTemplate, true, replacements);
Step 3: Create html template "BudgetThrasholdNotification.htm"
<html>
<head>
<title>Welcome</title>
</head>
<body>
Dear [Name],<br />
<br />
Thanks & Regards,<br />
</body>
</html>
Step 4: smtp4dev is great tool for testing email locally.
Step 5: web.config
<add key="SMTPServer" value="smtp.gmail.com" />
<add key="SMTP_Username" value="" />
<add key="SMTP_Password" value="" />
<add key="SMTP_Port" value="0" />
<add key="MailFrom" value="noreply@gmail.com" />
<add key="SMTP_UseDefaultCredentials" value="true" />
<add key="NotificationTemplatePath" value="C:\TestProject\EmailTemplates\" />
No comments:
Post a Comment