首页 > 其他分享 >.NET Core 邮件发送使用库MailKit

.NET Core 邮件发送使用库MailKit

时间:2024-09-12 14:46:45浏览次数:1  
标签:Core MailKit new var 邮箱 NET com message 邮件

安装库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("邮箱的名称", "[email protected]"));
     message.To.Add(new MailboxAddress("邮箱的名称", "接收方@exam.com"));
     message.Subject = subject;

     var bodyBuilder = new BodyBuilder
     {
         HtmlBody = body
     };

     message.Body = bodyBuilder.ToMessageBody();

     using (var smtpClient = new SmtpClient())
     {
         smtpClient.Connect("smtp.qq.com", 465, true); // 服务器地址、端口、加密方式 ssl加密端口465、587  以QQ邮箱为例,具体的服务器地址去对应邮箱官网获取
         smtpClient.Authenticate("[email protected]", "授权码"); // 邮箱登录凭证
         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("[email protected]", "授权码");
         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()中传入需要查看邮件的分类

标签:Core,MailKit,new,var,邮箱,NET,com,message,邮件
From: https://www.cnblogs.com/sugarwxx/p/18410188

相关文章

  • 010-BUG: org.springframework.cglib.core.CodeGenerationException: java.lang.refle
    参考:Unabletomakeprotectedfinaljava.lang.Classjava.lang.ClassLoader.defineClass-CSDN博客1.完整报错:"msg":"org.springframework.cglib.core.CodeGenerationException:java.lang.reflect.InaccessibleObjectException-->Unabletomakeprotect......
  • 深度学习|模型训练:手写 SimpleNet
    文章目录引言SimpleNet网络结构激活函数损失函数梯度计算SimpleNet类权重参数模型推理损失计算梯度计算SimpleNet概览模型训练数据准备训练过程结语引言从前文「深度学习|梯度下降法:误差最小化的权重参数」,我们知道了神经网络的学习就是“找寻使损失函数的值尽......
  • .NET 多版本 WinForm 开源控件库 SunnyUI
    前言给大家推荐一款开源的Winform控件库,可以帮助我们开发更加美观、漂亮的WinForm界面。项目介绍SunnyUI.NET是一个基于.NETFramework4.0+、.NET6、.NET7和.NET8的WinForm开源控件库,同时也提供了工具类库、扩展类库和多页面开发框架。基于.NETFramework4.0......
  • 揭秘Profinet远程IO模块的神奇之处
    在这个智能化、自动化日益普及的时代,远程IO模块发挥着越来越重要的用。我们自主研发的MR20系列一体式IO也应运而生,那么,它究竟是什么呢?又能为我们带来哪些便利?让我们一起揭开它的神秘面纱!什么是Profinet协议Profinet协议是一种基于以太网的工业自动化通信协议,广泛应用于工业控制系统......
  • Azure web app has no access to openai private endpoint in virtual network
    题意:"AzureWeb应用无法访问虚拟网络中的OpenAI私有端点。"问题背景:IamtryingtohostawebapplicationsimilartoaprivateChatGPTinstancewithinasecludedvirtualnetwork,ensuringthatthere'snoexternalinternetaccess."我正在尝试在一个隔离的......
  • nnunetv2系列:使用默认的预测类推理2D数据
    nnunetv2系列:使用默认的预测类推理2D数据这里参考源代码nnUNet/nnunetv2/inference/predict_from_raw_data.py中给的示例进行调整和测试。代码示例fromtorchimportdevicefromnnunetv2.inference.predict_from_raw_dataimportnnUNetPredictor#fromnnunetv2.pat......
  • dotnet C# 警惕可空结构体的方法内部赋值无效
    本文将记录一个C#dotnet里的一个稍微隐藏的行为,那就是如果有一个结构体存在某个的方法,此方法的作用是修改结构里面的字段或属性的值,那此时将会在可空的结构体调用此方法时,发现没有真正修改到可空结构体局部变量本身其实这个问题非常好理解,只不过可能在编写代码的时候,由于语法......
  • dotnet 使用 dnlib 检测插件程序集的 API 兼容性
    本文将和大家介绍在开发dotnet的插件时,如何通过dnlib库检测当前的插件是否由于主应用程序的版本差异导致存在API兼容性问题众所周知,在开发插件的过程中,插件与主程序之间的兼容性问题将持续是一个令开发者烦恼的事情。举个例子,我开发的插件是面向1.0版本的主程序开发了,我......
  • dotnet 禁用 SQLite 的 SQLiteFunction 扫描程序集提升启动性能
    在我所在的团队开发的一个WPF应用程序里面,使用到了SQLite作为本地数据库。在优化启动性能过程中,发现了在启动过程一旦访问SQLite将会因为SQLiteFunction扫描程序集导致CPU损耗,从而影响启动性能。本文将告诉大家如何禁用SQLite的SQLiteFunction扫描程序集在SQLiteF......
  • dotnet 测试 SemaphoreSlim 的 Wait 是否保持进入等待的顺序先进先出
    本文记录我测试dotnet里面的SemaphoreSlim锁,在多线程进入Wait等待时,进行释放锁时,获取锁执行权限的顺序是否与进入Wait等待的顺序相同。测试的结果是SemaphoreSlim的Wait大部分情况是先进先出,按照Wait的顺序出来的,但是压力测试下也存在乱序,根据官方文档说明不应该依......