MailKit---获取邮件

    MailKit是一个免费开源的邮箱类库,简单来说MailKit帮我们封装了有关邮箱的一些帮助类,提供方法让我们更容易使用邮箱的Smtp,Imap等邮箱协议。

    现在的邮箱基本上都使用Imap协议从邮件服务器获取邮件到本地,原来的pop3协议已经很少使用了。这里只介绍Imap的方式。

   一、创建获取邮件客户端并连接到邮件服务器。

1 ImapClient client = new ImapClient();
2 
3 client.Connect("mail.qq.com");
4 
5 //带端口号和协议的连接方式
6 client.Connect("imap.126.com", 993, true);

   二、验证登录信息,输入账号和密码登录。

1 string account = "admin";
2 string passWord = "123456";
3 client.Authenticate(account, passWord);

  三、获取邮箱文件夹。默认的收件箱文件夹叫INBOX。

1 //获取所有的文件夹
2 List<IMailFolder> mailFolderList = client.GetFolders(client.PersonalNamespaces[0]).ToList();
3 
4 //只获取收件箱文件加
5 var folder = client.GetFolder("INBOX");

  四、从文件夹获取文件,获取文件允许两种方式:1、只获取邮件头;2、获取完整的邮件;

复制代码
 1 //打开文件夹并设置为读的方式
 2 folder.Open(MailKit.FolderAccess.ReadOnly);
 3 
 4 //获取大于2016-9-1时间的所有邮件的唯一Id
 5 var uidss = folder.Search(SearchQuery.DeliveredAfter(DateTime.Parse("2016-9-1")));
 6 
 7 //获取邮件头
 8 folder.Fetch(uids, MessageSummaryItems.UniqueId | MessageSummaryItems.Full);
 9 
10 //获取完整邮件
11 foreach (var item in uidss ) {
12                         MimeMessage message = folder.GetMessage(new UniqueId(item.Id));
13                     }
复制代码

五、不要忘记关闭打开的文件夹;

1 folder.close();

整合基本方法如下:

复制代码
 1 ImapClient client = new ImapClient();
 2             string account = "admin";
 3             string passWord = "123456";
 4 
 5 client.Connect("imap.126.com", 993, true);
 6 
 7 client.Authenticate(account, passWord);
 8 
 9 var folder = client.GetFolder("INBOX");
10 folder.Open(MailKit.FolderAccess.ReadOnly);
11                         var uidss = folder.Search(SearchQuery.DeliveredAfter(DateTime.Parse("2016-9-1")));
12 
13 var ss = folder.Fetch(uidss, MessageSummaryItems.UniqueId | MessageSummaryItems.Full);
14 folser.close();
复制代码

 

posted @   醉梦ai天涯  阅读(5072)  评论(1)    收藏  举报
编辑推荐:
· 为 Java 虚拟机分配堆内存大于机器物理内存会怎么样?
· .NET程序启动就报错,如何截获初期化时的问题json
· 理解 C# 中的各类指针
· C#多线程编程精要:从用户线程到线程池的效能进化论
· 如何反向绘制出 .NET程序 异步方法调用栈
阅读排行:
· 换个方式用C#开发微信小程序
· 实现远程磁盘:像访问自己的电脑硬盘一样访问对方的电脑硬盘 (附Demo源码)
· 【.NET必读】RabbitMQ 4.0+重大变更!C#开发者必须掌握的6大升级要点
· .NET 10 Preview 4中ASP.NET Core 改进
· 记一次ASP.NET CORE线上内存溢出问题与dotnet-dump的排查方法
点击右上角即可分享
微信分享提示