Exemple #1
0
        public static void SendMailSmtp(string subject, string body, bool isBodyHtml, MailAddress[] mailTo, MailAddress[] hiddenMailTo, AttachmentFile file, bool isTest)
        {
            if (!mailTo.Any() && (hiddenMailTo == null || !hiddenMailTo.Any()))
            {
                throw new Exception("Не указаны получатели письма!");
            }

            var mail = new MailMessage();

            string host     = ConfigurationManager.AppSettings["SmtpHost"];
            int    port     = String.IsNullOrEmpty(ConfigurationManager.AppSettings["Host"]) ? 587 :Convert.ToInt32(ConfigurationManager.AppSettings["Host"]);
            string login    = ConfigurationManager.AppSettings["SmtpLogin"];
            string pass     = ConfigurationManager.AppSettings["SmtpPass"];
            string mailFrom = ConfigurationManager.AppSettings["SmtpMailFrom"];

            var client = new SmtpClient(host, port);

            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.EnableSsl      = true;
            client.Credentials    = new NetworkCredential(login, pass);

            mail.From = new MailAddress(mailFrom, string.Empty, System.Text.Encoding.UTF8);

            //client.EnableSsl = false;

            if (string.IsNullOrEmpty(ConfigurationManager.AppSettings["Environment"]) && !isTest)
            {
                if (mailTo != null)
                {
                    foreach (var mailAddress in mailTo)
                    {
                        if (string.IsNullOrEmpty(mailAddress.Address))
                        {
                            continue;
                        }
                        mail.To.Add(mailAddress);
                    }
                }
                if (hiddenMailTo != null)
                {
                    foreach (var mailAddress in hiddenMailTo)
                    {
                        if (string.IsNullOrEmpty(mailAddress.Address))
                        {
                            continue;
                        }
                        mail.CC.Add(mailAddress);
                    }
                }
            }
            else
            {
                var testMails = ConfigurationManager.AppSettings["Emails4Test"]?.Split('|');
                foreach (var email in testMails)
                {
                    if (string.IsNullOrEmpty(email))
                    {
                        continue;
                    }
                    mail.To.Add(email);
                }

                body += "\r\n";
                if (mailTo != null)
                {
                    foreach (var mailAddress in mailTo)
                    {
                        body += "\r\n" + mailAddress.Address;
                    }
                }
                //Hidden recipients
                if (hiddenMailTo != null)
                {
                    foreach (var mailAddress in hiddenMailTo)
                    {
                        body += "\r\n" + mailAddress.Address;
                    }
                }
            }

            mail.Subject    = subject;
            mail.Body       = body;
            mail.IsBodyHtml = isBodyHtml;
            //client.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
            //client.SendCompleted += (s, e) => {
            //    SendCompletedCallback(s, e);
            //    client.Dispose();
            //    mail.Dispose();
            //};

            if (file != null && file.Data.Length > 0)
            {
                var stream     = new MemoryStream(file.Data);
                var attachment = new Attachment(stream, file.FileName, file.DataMimeType);
                mail.Attachments.Add(attachment);
            }

            try
            {
                client.Send(mail);
            }
            catch (Exception ex)
            {
                throw new Exception($"Сообщение не было отправлено. Текст ошибки - {ex.Message}");
            }
        }
Exemple #2
0
 public static void SendMailSmtp(string subject, string body, bool isBodyHtml, string mailTo, string hiddenMailTo = null, AttachmentFile file = null)
 {
     SendMailSmtp(subject, body, isBodyHtml, new[] { mailTo }, new[] { hiddenMailTo }, file);
 }
Exemple #3
0
 public static void SendMailSmtp(string subject, string body, bool isBodyHtml, MailAddress[] mailTo, MailAddress[] hiddenMailTo = null, AttachmentFile file = null)
 {
     Task.Run(() => { SendMailSmtp(subject, body, isBodyHtml, mailTo.ToArray(), hiddenMailTo?.ToArray(), file, false); });
 }
Exemple #4
0
        public static void SendMailSmtp(string subject, string body, bool isBodyHtml, IEnumerable <string> mailTo, IEnumerable <string> hiddenMailTo = null, AttachmentFile file = null)
        {
            var recipients = new List <MailAddress>();

            if (mailTo != null)
            {
                foreach (var email in mailTo)
                {
                    if (string.IsNullOrEmpty(email))
                    {
                        continue;
                    }
                    recipients.Add(new MailAddress(email));
                }
            }

            var recHidden = new List <MailAddress>();

            if (hiddenMailTo != null)
            {
                foreach (var email in hiddenMailTo)
                {
                    if (string.IsNullOrEmpty(email))
                    {
                        continue;
                    }
                    recHidden.Add(new MailAddress(email));
                }
            }

            Task.Run(() => { SendMailSmtp(subject, body, isBodyHtml, recipients.ToArray(), recHidden.ToArray(), file); });
        }