admin管理员组文章数量:1558100
背景介绍:VS2017 | core | C# | framwork 4.0
-----------------------------------------------------------------------
这东西本来没打算记的,主要是连接邮件服务器的时候百度搜出来的大多博客不能用,浪费1小时,所以来记一下,主要看的是这个参考博客,我在此基础上做了改动
实现功能如下:
1. 通过授权码连接到邮箱服务器,并获取到某文件夹下的邮件,以上出错添加了能看到是哪块的问题(对使用的邮箱需要你开启STMP服务,设置规则以确保符合的邮件移动到此文件夹下)
2. 不打开邮件,只根据主题进行筛选,同主题邮件取日期最新的那个(通过linq筛选实现)
3. 直接下载邮件中所有的普通附件(大于50M的是超大附件,只有链接,且无法通过代码下载(反正我不行,你行你试试))
4. 下载完成删除同类旧压缩包
因为头担心QQ强制改掉授权码,要求换一个,我选了网易,这两个都支持最大50M的,还有新浪什么的,但没注册就没用
关于授权码:
网易:授权码是你自己设定的,方便记忆 最多16位
QQ:授权码给你分配的,12位,但明确说了可以有很多个不用记,但只要你改QQ密码或什么中心密码,之前的全部失效
但连获取邮箱文件夹内容这里,QQ网易不一样啊,网易真的坑,你愣愣的上来会获不到“故意设置障碍,其实是网易需要我们表明我们登录的客户端身份,具体的原理和命令参照我上一篇文章查看IMAP ID COMMAND命令,下面只具体说说mailkit如何使用到这条命令,其实mailkit是提供这个命令的,足见mailkit的强大” ---参考这个博客,
一,nuget包,搜MailKit 找到适合你的版本,下载
-----------------------------------------------------------------------
二. 代码内容(QQ的)
string account = "198416****@qq";
string passWord = "jsknsh**********";//获得的授权码
m_logger.LogInformation("开始到邮箱查询更新包");
//准备工作结束
ImapClient client = new ImapClient();
#region 连接到邮件服务器
try
{
//一、创建获取邮件客户端并连接到邮件服务器。
//带端口号和协议的连接方式
client.Connect("imap.qq", 993, true);
}
catch (ImapCommandException ex)
{
m_logger.LogInformation($"---------尝试连接时出错:{0}------------" + ex.Message);
}
catch (ImapProtocolException ex)
{
m_logger.LogInformation($"---------尝试连接时的协议错误:{0}------------" + ex.Message);
}
catch (Exception ex)
{
m_logger.LogInformation($"---------服务器连接错误:{0}------------" + ex.Message);
版权声明:本文标题:C#使用 MailKit获取邮件中的附件(QQ邮箱163网易邮箱) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1727359002a1110397.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论