MailKit---获取邮件

时间:2021-06-10 05:33:45

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

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

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

 ImapClient client = new ImapClient();

 client.Connect("mail.qq.com");

 //带端口号和协议的连接方式
client.Connect("imap.126.com", , true);

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

 string account = "admin";
string passWord = "";
client.Authenticate(account, passWord);

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

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

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

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

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

 folder.close();

整合基本方法如下:

 ImapClient client = new ImapClient();
string account = "admin";
string passWord = ""; client.Connect("imap.126.com", , true); client.Authenticate(account, passWord); var folder = client.GetFolder("INBOX");
folder.Open(MailKit.FolderAccess.ReadOnly);
var uidss = folder.Search(SearchQuery.DeliveredAfter(DateTime.Parse("2016-9-1"))); var ss = folder.Fetch(uidss, MessageSummaryItems.UniqueId | MessageSummaryItems.Full);
14 folser.close();