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. Java学习日报7.15

    package oddor;import java.util.Scanner;public class Oddor{ public static void main(String args[]) { ...

  2. Lightweight Render Pipeline

    (翻译) Lightweight Render Pipeline (LWRP),轻量级渲染管线,是一个Unity预制的Scriptable Render Pipeline (SRP).LWRP可以为移 ...

  3. Centos7 安装Teamviewer

    参考:链接1  链接2  链接3 由于工作原因,需要再Centos7.6下安装Teamviewer,流程如下: 下载 TeamViewer下载 链接 wget https://download.tea ...

  4. Spring-构造注入&注解注入&代理模式&AOP

    1.   课程介绍 1.  依赖注入;(掌握) 2.  XML自动注入;(掌握) 3.  全注解配置;(掌握) 4.  代理模式;(掌握) 5.  AOP;(掌握) 依赖注入;(掌握) 2.1.  构 ...

  5. 路由器开启远程控制(ssh或telent)

    • 远程控制        ○ 开启远程控制            § conf t             § line vty 0 4                □ 0 4 意思是最多允许5个 ...

  6. UnityToLaya小插件-找出空格并替换

    unity导出的文件中经常会出现带有空格的节点或者文件夹 而这些空格在本地开发测试过程中不会出现,当这些带有空格路径的文件需要放到网络上时,就出现问题了 所以这里写了一个简单的查找并清理空格的插件, ...

  7. Android事件分发机制一:事件是如何到达activity的?

    事件分发,真的一定从Activity开始吗? 前言 很高兴遇见你~ 事件分发,android中一个老生常谈的话题了.基本的流程我们也都知道是从Activity开始分发,但有一个关键问题是:事件是如何到 ...

  8. Openstack Nova 添加计算节点(六.一)

    Openstack Nova 添加计算节点(六.一) # 重要的两点: 1 时间同步 2 yum 源 # 安装软件: yum install openstack-selinux openstack-n ...

  9. Test typora

    目录 0. test 0.5 easy test 1. problem 1 2. problem 2 3. problem 3 import numpy as np import matplotlib ...

  10. 记一道C语言编程题(C语言学习笔记)

    题目如下 解答如下 #include <stdio.h> #include<math.h> double Mysqrt(double n) { return sqrt(n); ...