.NET Core 邮件发送使用库MailKit

安装库MailKit

 发送邮件

 /// <summary>
 /// 发送邮件
 /// </summary>
 /// <param name="subject">邮件主题</param>
 /// <param name="body">邮件内容</param>
 public void SendEmail(string subject, string body)
 {
     var message = new MimeMessage();
     message.From.Add(new MailboxAddress("邮箱的名称", "your@example.com"));//邮箱名称可以随意自定义
     message.To.Add(new MailboxAddress("邮箱的名称", "接收方@exam.com"));
     message.Subject = subject;

     var bodyBuilder = new BodyBuilder
     {
TextBody = body //HtmlBody
= body }; message.Body = bodyBuilder.ToMessageBody(); using (var smtpClient = new SmtpClient()) { smtpClient.Connect("smtp.qq.com", 465, true); // 服务器地址、端口、加密方式 ssl加密端口465、587 以QQ邮箱为例,具体的服务器地址去对应邮箱官网获取 企业微信邮箱服务器地址:smtp.exmail.qq.com QQ邮箱服务器地址:smtp.qq.com smtpClient.Authenticate("your@example.com", "授权码"); // 邮箱登录凭证 smtpClient.Send(message); smtpClient.Disconnect(true); } }

注:

关于授权码,需要去发送方邮箱的官网获取授权码,以QQ邮箱为例,登录QQ邮箱进入设置=》账号=》账号安全=》开启服务,跟着指示向下执行,就很可以获取授权码

 

 

 

 

收取邮件

 /// <summary>
 /// 收取邮件
 /// </summary>
 /// <returns></returns>
 public async Task ReceiveEmailAsync()
 {
     using (var client=new ImapClient())
     {
         await client.ConnectAsync("imap.qq.com", 993,true);//ssl 端口993 以QQ邮箱为例
         await client.AuthenticateAsync("your@qq.com", "授权码");
         var inbox = client.Inbox;
         await inbox.OpenAsync(MailKit.FolderAccess.ReadOnly);
         foreach(var uid in await inbox.SearchAsync(SearchQuery.NotSeen))//此处获取未查看的邮件
         {
             var message=await inbox.GetMessageAsync(uid);
             Console.WriteLine($"Subject:{message.Subject}");
         }
         await client.DisconnectAsync(true);
     }
 }
注:根据需求向inbox.SearchAsync()中传入需要查看邮件的分类

邮件配置参考 GitHub 示例


posted @ 2024-09-12 14:54  流年sugar  阅读(101)  评论(0)    收藏  举报