using MailKit; using MailKit.Security; using MimeKit; namespace IRaCIS.Core.Application.Helper; public static class SendEmailHelper { public static async Task SendEmailAsync(MimeMessage messageToSend, EventHandler? messageSentSuccess = null) { using (var smtp = new MailKit.Net.Smtp.SmtpClient()) { if (messageSentSuccess != null) { smtp.MessageSent += messageSentSuccess; } smtp.ServerCertificateValidationCallback = (s, c, h, e) => true; await smtp.ConnectAsync("smtp.qq.com", 465, SecureSocketOptions.SslOnConnect); await smtp.AuthenticateAsync("zhou941003@qq.com", "sqfhlpfdvnexbcab"); await smtp.SendAsync(messageToSend); await smtp.DisconnectAsync(true); } } public static async Task SendEmailAsync(SMTPEmailConfig sMTPEmailConfig, EventHandler? messageSentSuccess = null) { var messageToSend = new MimeMessage(); //主题 messageToSend.Subject = sMTPEmailConfig.TopicDescription; //发件地址 messageToSend.From.Add(sMTPEmailConfig.FromEmailAddress); //收件地址 if (sMTPEmailConfig.ToMailAddressList.Count == 0) { throw new ArgumentException("没有收件人"); } else { foreach (var item in sMTPEmailConfig.ToMailAddressList) { messageToSend.To.Add(item); } //抄送 foreach (var copyToMailAddress in sMTPEmailConfig.CopyToMailAddressList) { messageToSend.Cc.Add(copyToMailAddress); } } var builder = new BodyBuilder(); //html body builder.HtmlBody = sMTPEmailConfig.HtmlBodyStr; //附件 foreach (var item in sMTPEmailConfig.EmailAttachMentConfigList) { //builder.Attachments.Add(item.FileName, item.FileData); builder.Attachments.Add(item.FileName, item.FileStream); } messageToSend.Body = builder.ToMessageBody(); using (var smtp = new MailKit.Net.Smtp.SmtpClient()) { if (messageSentSuccess != null) { smtp.MessageSent += messageSentSuccess; } smtp.ServerCertificateValidationCallback = (s, c, h, e) => true; await smtp.ConnectAsync(sMTPEmailConfig.Host, sMTPEmailConfig.Port, SecureSocketOptions.SslOnConnect); await smtp.AuthenticateAsync(sMTPEmailConfig.UserName, sMTPEmailConfig.AuthorizationCode); await smtp.SendAsync(messageToSend); await smtp.DisconnectAsync(true); } } } public class SMTPEmailConfig { public int Port { get; set; } = 465; public string Host { get; set; } = "smtp.163.com"; public string UserName { get; set; } = "iracis_grr@163.com"; public string AuthorizationCode { get; set; } = "XLWVQKZAEKLDWOAH"; //邮件HtmlBody public string HtmlBodyStr { get; set; } = string.Empty; //发 public MailboxAddress FromEmailAddress { get; set; } = new MailboxAddress("GRR", "iracis_grr@163.com"); //收 public List ToMailAddressList { get; set; } = new List(); //抄送 public List CopyToMailAddressList { get; set; } = new List(); //邮件主题 public string TopicDescription { get; set; } = string.Empty; //邮件附件 public List EmailAttachMentConfigList { get; set; } = new List() { }; } public class EmailAttachMentConfig { public string FileName { get; set; } public Stream FileStream { get; set; } public byte[] FileData { get; set; } }