private void SendMailTask(IntervalSendMail obj) { foreach (var to in obj.List) { try { obj.MailMessage.To.Clear(); obj.MailMessage.To.Add(to); if (obj.SmtpClient.EnableSsl) { ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return(true); }; } obj.SmtpClient.Send(obj.MailMessage); System.Threading.Thread.Sleep(obj.Interval * 1000); } catch (Exception ex) { } } }
public bool SendGroupMailWithInterval(ref MailMessage mail, string mailHost, string mailPassword, string mailUserName, string mailFrom, short mailPort, string mailSenderDisplayName, bool enableSsl, string[] To, string subject, string Body, string[] Cc = null, string[] Bcc = null, List <HttpPostedFileBase> Attachments = null, bool Persist = false, int intervalSecond = 20) { #region SMTP Setting if (string.IsNullOrEmpty(mailFrom) || To == null) { return(false); } var smtpClient = new SmtpClient(); //var From = new MailAddress(mailFrom, mailSenderDisplayName); MailAddress From; if (mailHost == "smtp.gmail.com") { From = new MailAddress(mailFrom, "", Encoding.UTF8); } else { From = new MailAddress(mailFrom, mailSenderDisplayName, Encoding.UTF8); } mail.From = From; //mail.Sender = From; smtpClient.Host = mailHost; smtpClient.Port = mailPort; smtpClient.EnableSsl = enableSsl; smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; smtpClient.UseDefaultCredentials = false; var password = StringUtils.Decrypt(mailPassword); smtpClient.Credentials = new NetworkCredential(mailFrom, password); #endregion var sendList = new List <string>(); if (To.Any()) { sendList.AddRange(To.Where(Utils.IsEmail)); } if (Bcc != null) { sendList.AddRange(Bcc.Where(Utils.IsEmail)); } if (Cc != null) { sendList.AddRange(Cc.Where(Utils.IsEmail)); } #region Attachment if (Attachments != null) { foreach (var item in Attachments) { var obj = new Attachment(item.InputStream, item.FileName, item.ContentType); mail.Attachments.Add(obj); } } #endregion //Subject mail.Subject = string.IsNullOrEmpty(subject) ? "No Subject" : subject; //Body mail.Body = string.IsNullOrEmpty(Body) ? "http://www.Radyn.ir" : Body; mail.DeliveryNotificationOptions = DeliveryNotificationOptions.Never; mail.BodyEncoding = Encoding.UTF8; mail.SubjectEncoding = Encoding.UTF8; mail.HeadersEncoding = Encoding.UTF8; mail.Priority = MailPriority.Normal; mail.IsBodyHtml = true; var intervalSendMail = new IntervalSendMail { Interval = intervalSecond, List = sendList, MailMessage = mail, SmtpClient = smtpClient }; Task.Factory.StartNew(() => SendMailTask(intervalSendMail)); return(true); }