0.介绍

MimeKit and MailKit are popular fully-featured email frameworks for .NET

框架支持版本如下

Supports .NET 4.5, .NET 4.6, .NET 4.7, .NET 4.8, .NET 5.0, .NETStandard 2.0, Xamarin.Android, Xamarin.iOS, Windows Phone 8.1, and more.

MailKit是最流行且最强大的.NET邮件处理框架之一,下面为大家简单介绍MailKit的使用方式(IMAP为例)

1. 参考资料

Github https://github.com/jstedfast/MailKit

官方Doc http://www.mimekit.net/docs/html/Introduction.htm

2.核心内容(IMAP为例)

  • 连接邮箱
加密
client.Connect("imap.exmail.qq.com", 993, SecureSocketOptions.SslOnConnect);
不加密
client.Connect("imap.exmail.qq.com", 143, SecureSocketOptions.None);
  • 登入邮箱
client.Authenticate(MAIL_NAME, MAIL_PASSWORD);
  • 打开邮件文件夹
client.Inbox.Open(FolderAccess.ReadWrite);
  • 读取文件
读取方式一:可以预先筛选邮件
   search for messages where the Subject header contains either "MimeKit" or "MailKit"
var query = SearchQuery.SubjectContains("MimeKit").Or(SearchQuery.SubjectContains("MailKit"));
var uids = client.Inbox.Search(query);
读取方式二:读取所有邮件
   var uids = client.Inbox.Search(SearchQuery.All);
  • 邮件操作
操作邮件一:读取邮件标题
    string subject = message.Subject;
if (!subject.Contains("MimeKitDemo"))
return;
操作邮件二:读取正文
   string body = message.TextBody ?? string.Empty;
if (!body.Contains("MimeKitDemoBody"))
return;
操作邮件三:下载邮件附件
    var attachments = message.Attachments;
if (attachments.Any())
{
foreach (var attachment in attachments)
DownloadAttachment(attachment);
} private static void DownloadAttachment(MimeEntity attachment)
{
if (attachment is MessagePart)
{
var fileName = attachment.ContentDisposition?.FileName;
var rfc822 = (MessagePart)attachment; if (string.IsNullOrEmpty(fileName))
fileName = "attached-message.eml"; var path = Path.Combine(DIRECTORY, fileName);
using (var stream = File.Create(path))
rfc822.Message.WriteTo(stream);
}
else
{
var part = (MimePart)attachment;
var fileName = part.FileName; var path = Path.Combine(DIRECTORY, fileName);
using (var stream = File.Create(path))
part.Content.DecodeTo(stream);
}
}
操作邮件四:移动邮件(移动至删除文件夹)

client.Inbox.MoveTo(uid, client.GetFolder(SpecialFolder.Trash));
操作邮件五:删除邮件 - 将邮件标记为删除、最后删除
    client.Inbox.AddFlags(uid, MessageFlags.Deleted, true);
client.Inbox.Expunge();

3.样例源码地址

https://github.com/Impartsoft/Bins/tree/main/MailKitDemo

.NET使用MailKit进行邮件处理的更多相关文章

  1. 使用MailKit收发邮件

    .Net BCL库中对于邮件的支持只有SmtpClient一个,它只能进行简单的邮件的发送操作,并且不支持POP3和SMTP,无法接收邮件,用起来有诸多不便. 今天看到园子里有文章(使用 MimeKi ...

  2. C# mailKit 发邮件 简单代码

    public static async Task<bool> SendMailAsync22(string Name, string receive, string sender, str ...

  3. Netcore使用MailKit进行邮件发送

    public void TestSendMailDemo() { var message = new MimeKit.MimeMessage(); message.From.Add(new MimeK ...

  4. 创建基于MailKit和MimeKit的.NET基础邮件服务

    邮件服务是一般的系统都会拥有和需要的功能,但是对于.NET项目来说,邮件服务的创建和使用会较为的麻烦..NET对于邮件功能提供了System.Net.Mail用于创建邮件服务,该基础服务提供邮件的基础 ...

  5. MailKit和MimeKit的.NET基础邮件服务

    MailKit和MimeKit的.NET基础邮件服务 邮件服务是一般的系统都会拥有和需要的功能,但是对于.NET项目来说,邮件服务的创建和使用会较为的麻烦..NET对于邮件功能提供了System.Ne ...

  6. MailKit和MimeKit 收发邮件

    新建项目,引用MailKit和MimeKit NuGet包 using CommonTool.MailKit; using System; using System.Collections.Gener ...

  7. MailKit系列之附件分离

    本文主要谈谈实现思路,不提供完整代码 一.分离基础 1.MIME邮件的multipart类型 引用文章:https://blog.csdn.net/wangyu13476969128/article/ ...

  8. 一起了解 .Net Foundation 项目 No.11

    .Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧. 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译.如与原文存在出入,请以原文为准. Microsoft Web ...

  9. 一起了解 .Net Foundation 项目 No.12

    .Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧. 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译.如与原文存在出入,请以原文为准. Cecil Cecil 是 ...

随机推荐

  1. web攻防环境--一句话木马

    任务一.基于centos7搭建dvwa web服务靶机 1.在centos7安装LAMP并启动,访问phpinfo页面 也即安装httpd.php.mysql服务. 直接进行yum安装即可,完成后检查 ...

  2. Macbook 安装Windows的完美教程

    [原文](http://www.melodydance.top/mac-win.html) 1. 背景 Windows相对于Mac市场占有率更高,对很多人来说Windows使用起来更方便,以至于很多人 ...

  3. LeetCode707 设计链表

    设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针/引用.如果要使用双向链表,则还需要一个属性 ...

  4. 【Tomcat 源码系列】认识 Tomcat

    一,前言 说一句大实话,"平时一直在用 Tomcat,但是我从来没有用过 Tomcat". "平时一直在用 Tomcat",是因为搬砖用的 SpringBoot ...

  5. 如何实现CentOS服务器的扩容??

    Linux的硬盘识别: 一般使用"fdisk -l"命令可以列出系统中当前连接的硬盘 设备和分区信息.新硬盘没有分区信息,则只显示硬盘大小信息. 1.关闭服务器加上新硬盘 2.启动 ...

  6. CAN总线采样点测试

    采样点是什么? 采样点是接受节点判断信号逻辑的位置,CAN通讯属于异步通讯.需要通过不断的重新同步才能保证收发节点的采样准确. 若采样点太靠前,则因为线缆原因,DUT外发报文尚未稳定,容易发生采样错误 ...

  7. Java 基于mail.jar 和 activation.jar 封装的邮件发送工具类

    准备工作 发送邮件需要获得协议和支持! 开启服务 POP3/SMTP 服务 如何开启 POP3/SMTP 服务:https://www.cnblogs.com/pojo/p/14276637.html ...

  8. SDUST数据结构 - chap4 串

    函数题: 6-1 查找子串: 裁判测试程序样例: #include <stdio.h> #define MAXS 30 char *search(char *s, char *t); vo ...

  9. 避免用using包装DbContext【翻译】

    EF和EF Core 的DbContext类实现IDisposable接口.因此,很多最佳编程实践中都建议你将它们放在一个using()块中.不幸的是,至少在Web应用程序中,这样做通常不是一个好主意 ...

  10. px转rem的填坑之路

    这是要为一个vue项目做自适应,设计稿是1920*1080的,要适应各种手机.ipad.3840*2160的超大屏,所以就选择了rem,包用的是 postcss-pxtorem 在适配的时候遇到了很多 ...