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();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现