Example #1
0
        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)
                {
                }
            }
        }
Example #2
0
        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);
        }