/// <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); }
/// <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); } }