Wednesday, 18 September 2013

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\" />
   

No comments:

Post a Comment