The following C# source code shows how to send an email
First Create Class for sending mail.
    public class EmailModel
    {
        public List<string> To { get; set; } = new List<string>();
        public List<string> CC { get; set; } = new List<string>();
        public List<string> BCC { get; set; } = new List<string>();
        public string Subject { get; set; } 
        public string Body { get; set; }
        public bool EnableSSL { get; set; }
        public string FromMail { get; set; }
        public int Port { get; set; }
        public string FileName { get; set; }
        public string SmtpServer { get; set; }
        
}
public class MailAddresses
    {
        public List<string> To { get; set; } = new List<string>();
        public List<string> CC { get; set; } = new List<string>();
    }
After that set some keys in web.config file or you can use in code also but for best practice you have to set in web.config file.
<!--email configuration-->
		<add key="EmailFrom" value="pawan.kumar@gmail.com" />
		<add key="PWD" value="Password@123" />
		<add key="host" value="smtp.gmail.com" />
		<add key="port" value="587" />
		<add key="EnableSSL" value="true" />
		<add key="MaildisplayName" value="no-reply"/>
<!--end email configuration-->
use these key in mail sending method. I have created one common method for sending mail. you can use this method in any type application like Console application, web application etc.
//this is the method which we use to send mail from gmail smtp server.
 public void SendMail(EmailModel emailModel)
    {
            try
            {
                using (MailMessage mail = new MailMessage())
                {
                    emailModel.FromMail = 								ConfigurationManager.AppSettings["EmailFrom"];
                    string pwd = ConfigurationManager.AppSettings["PWD"];
                    string _displayName= 	ConfigurationManager.AppSettings["MaildisplayName"];
                    emailModel.SmtpServer = ConfigurationManager.AppSettings["host"];
                    emailModel.Port =                                     	Convert.ToInt32(ConfigurationManager.AppSettings["port"]);
                    emailModel.EnableSSL = 	Convert.ToBoolean(ConfigurationManager.AppSettings["EnableSSL"]);
                    if (emailModel.To != null && emailModel.To.Count > 0)
                    {
                        foreach (var item in emailModel.To)
                            mail.To.Add(item);
                    }
                   
                    if (emailModel.CC != null && emailModel.CC.Count > 0)
                    {
                        foreach (var item in emailModel.CC)
                            mail.CC.Add(item);
                    }
                    mail.From = new MailAddress(emailModel.FromMail, _displayName);
                    mail.Subject = emailModel.Subject;
                    mail.Body = emailModel.Body;
                    
//if you want to send attachment then use this if condition other you can //skip this condition
                    if(!string.IsNullOrWhiteSpace(emailModel.FilePath))
                    {
                        //Attaching File to Mail
                        Attachment attachment = new 		System.Net.Mail.Attachment(emailModel.FilePath);
                        mail.Attachments.Add(attachment);
                    }
                    mail.IsBodyHtml = true;
                    
                    SmtpClient smtp = new SmtpClient();
                    smtp.Host = emailModel.SmtpServer;
                    
                    smtp.EnableSsl = emailModel.EnableSSL;
                    NetworkCredential NetworkCred = new 		NetworkCredential(emailModel.FromMail, pwd);
                    smtp.UseDefaultCredentials = true;
                    smtp.Credentials = NetworkCred;
                    smtp.Port = emailModel.Port;
                    
                    smtp.Send(mail);
                }
            }
            catch (Exception ex)
            {
            }
            
            
        }
Below is code for calling method.
//Create model class object and assign mail address list which
//you want to send in TO and CC and pass all other fields which you
//want to send in mail
                EmailModel emailModel = new EmailModel();
                emailModel.To = mailAddress.To;
                emailModel.CC = mailAddress.CC;
 	            	emailModel.Subject = "Email Testing";
//call the SendMail method either in same class or from other place
SendMail(emailModel);
 
No comments:
Post a Comment