using Microsoft.Extensions.Options; using MimeKit; using MimeKit.Text; using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Threading.Tasks; namespace New_College.Common.Helper { public static class MailKitManagement { /// /// send email /// /// /// /// /// /// /// /// public static async Task SendMessageAsync(List toMailAddressList, List ccAddresList, string subject, string body, List attachmentList = null, bool isHtml = false) { var mailMessage = new MimeMessage(); mailMessage.From.Add(new MailboxAddress(MailKitConfig.DisplayName, MailKitConfig.MailAddress)); foreach (var mailAddressItem in toMailAddressList) { mailMessage.To.Add(MailboxAddress.Parse(mailAddressItem)); } if (ccAddresList != null) { ccAddresList.ForEach(p => { mailMessage.Cc.Add(MailboxAddress.Parse(p)); }); } mailMessage.Subject = subject; TextPart messageBody = null; if (isHtml) { messageBody = new TextPart(TextFormat.Html) { Text = body, }; } else { messageBody = new TextPart(TextFormat.Plain) { Text = body, }; } var mulitiPart = new Multipart("mixed") { }; mulitiPart.Add(messageBody); if (attachmentList != null && attachmentList.Count > 0) { foreach (var attatchItem in attachmentList) { using (var stream = File.OpenRead(attatchItem)) { var attachment = new MimePart() { Content = new MimeContent(stream, ContentEncoding.Default), ContentDisposition = new ContentDisposition(ContentDisposition.Attachment), ContentTransferEncoding = ContentEncoding.Base64, FileName = Path.GetFileName(attatchItem) }; mulitiPart.Add(attachment); } } } mailMessage.Body = mulitiPart; using (var client = new MailKit.Net.Smtp.SmtpClient()) { if (MailKitConfig.IsSsl) { client.ServerCertificateValidationCallback = (s, c, h, e) => true; } client.Connect(MailKitConfig.MailServer, MailKitConfig.SmtpPort, MailKitConfig.IsSsl); // Disable the XOAUTH2 authentication mechanism. //client.AuthenticationMechanisms.Remove("XOAUTH2"); // Note: only needed if the SMTP server requires authentication client.Authenticate(MailKitConfig.MailAddress, MailKitConfig.Password); await client.SendAsync(mailMessage); client.Disconnect(true); } } } }