/// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        private async Task <SmtpClient> InitSmtpClient()
        {
            var model = await _emailConfigService.GetConfig();

            var smtpClient = new SmtpClient {
                ServerCertificateValidationCallback = (s, c, h, e) => true
            };

            smtpClient.Connect(model.SmtpServer, model.SmtpPort,
                               !model.SmtpEnableSSL ? SecureSocketOptions.None : SecureSocketOptions.Auto);

            // since we don't have an OAuth2 token, disable
            // the XOAUTH2 authentication mechanism.
            smtpClient.AuthenticationMechanisms.Remove("XOAUTH2");

            // Если
            if (!string.IsNullOrEmpty(model.SmtpLogin) && !string.IsNullOrEmpty(model.SmtpPassword))
            {
                smtpClient.Authenticate(model.SmtpLogin, model.SmtpPassword);
            }

            return(smtpClient);
        }
Beispiel #2
0
        /// <summary>
        /// Непосредственно отправка письма
        /// </summary>
        /// <param name="mailTo">Кому e-mail, разделен ","</param>
        /// <param name="mailCc">Копия e-mail, разделен ","</param>
        /// <param name="mailBcc">Скрытая копия e-mail, разделен ","</param>
        /// <param name="subject">Тема</param>
        /// <param name="message">Тело</param>
        /// <param name="encoding">Кодировка</param>
        /// <param name="isHtml">Это HTML</param>
        private async Task SendEmail(string mailTo, string mailCc, string mailBcc, string subject, string message, Encoding encoding, bool isHtml)
        {
            var modelSettings = await _emailConfigService.GetConfig();

            var to  = new string[0];
            var cc  = new string[0];
            var bcc = new string[0];

            if (!string.IsNullOrEmpty(mailTo))
            {
                to = mailTo.Split(',').Select(x => x.Trim()).ToArray();
            }
            if (!string.IsNullOrEmpty(mailCc))
            {
                cc = mailCc.Split(',').Select(x => x.Trim()).ToArray();
            }
            if (!string.IsNullOrEmpty(mailBcc))
            {
                bcc = mailBcc.Split(',').Select(x => x.Trim()).ToArray();
            }

            // HACK добавить проверку корректности E-mail ?
            var mimeMessage = new MimeMessage();

            // от кого письмо имя и обратный адрес
            mimeMessage.From.Add(new MailboxAddress(modelSettings.SmtpEmailDisplay, modelSettings.SmtpEmail));

            // кому
            foreach (string tos in to)
            {
                mimeMessage.To.Add(MailboxAddress.Parse(tos));
            }

            // копия
            foreach (string ccs in cc)
            {
                mimeMessage.Cc.Add(MailboxAddress.Parse(ccs));
            }

            // скрытая копия
            foreach (string bccs in bcc)
            {
                mimeMessage.Bcc.Add(MailboxAddress.Parse(bccs));
            }

            // тема письма
            mimeMessage.Subject = subject;

            // тело письма
            TextPart body;

            body = isHtml ? new TextPart(TextFormat.Html) : new TextPart(TextFormat.Text);

            // кодировка
            body.SetText(encoding, message);

            // тело письма
            mimeMessage.Body = body;

            using (var client = await _mailKitSmtpClient.SmtpClient())
            {
                await client.SendAsync(mimeMessage);

                await client.DisconnectAsync(true);
            }
        }