下载QQ、outllook、网易邮件附件
- 解决方案
- 1.注册QQ邮箱,并开启pop3
- 2.下载并引用程序集DLL:OpenPop.dll
- 3.创建EmailHelper对象
- 4.验证邮箱是否登录成功
- 获取邮件数量
- 下载邮件附件
- 验证outllok邮箱失败及处理
解决方案
这里示例下载QQ邮箱附件,其它邮箱附件下载步骤也是一样的
1.注册QQ邮箱,并开启pop3

2.下载并引用程序集DLL:OpenPop.dll
百度网盘路径:https://pan.baidu.com/s/1Ss9ryPzJxGKdVPavyj3Sjg 提取码:vfxp
3.创建EmailHelper对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public class EmailHelper { private string accout; //邮箱账户 private string pass;//邮箱密码 private string popServer; //pop服务地址 private int popPort; //pop服务端口号(110) private bool isUseSSL; private string ServerDataDB; public EmailHelper(string _accout, string _pass, string _popServer, int _popPort, bool _isUseSSL,string _ServerDataDB) { this.accout = _accout; this.pass = _pass; this.popServer = _popServer; this.popPort = _popPort; this.isUseSSL = _isUseSSL; this.ServerDataDB = _ServerDataDB; } } |
4.验证邮箱是否登录成功
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #region 验证邮箱是否登录成功 public bool ValidateAccount(ref string error) { Pop3Client client = new Pop3Client(); try { client.Connect(popServer, popPort, isUseSSL); client.Authenticate(accout, pass); } catch (InvalidLoginException ex) { error = "邮箱登录失败!"; Log.CreateLogManager().Debug("0.1邮箱登录失败"); return false; } catch (InvalidUseException ex) { error = "邮箱登录失败!"; Log.CreateLogManager().Debug("0.2邮箱登录失败"); return false; } catch (PopServerNotFoundException ex) { error = "服务器没有找到!"; Log.CreateLogManager().Debug("0.3服务器没有找到"); return false; } catch (PopServerException ex) { error = "请在邮箱开通POP3/SMTP!"; Log.CreateLogManager().Debug("0.4请在邮箱开通POP3/SMTP!"); return false; } catch (Exception ex) { error = "连接出现异常"; Log.CreateLogManager().Debug("0.5连接出现异常"); return false; } finally { client.Disconnect(); } return true; } #endregion |
获取邮件数量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #region /// <summary> /// 获取邮件数量 /// </summary> /// <returns></returns> public int GetEmailCount() { int messageCount = 0; using (Pop3Client client = new Pop3Client()) { if (client.Connected) { client.Disconnect(); } client.Connect(popServer, popPort, isUseSSL); client.Authenticate(accout, pass, AuthenticationMethod.UsernameAndPassword); messageCount = client.GetMessageCount(); } return messageCount; } #endregion |
下载邮件附件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #region 下载邮件附件 /// <summary> /// 下载邮件附件 /// </summary> /// <param name="path">下载路径</param> /// <param name="messageId">邮件编号</param> public void DownAttachmentsById(string path, int messageId) { using (Pop3Client client = new Pop3Client()) { if (client.Connected) { client.Disconnect(); } client.Connect(popServer, popPort, isUseSSL); client.Authenticate(accout, pass); Message message = client.GetMessage(messageId); string senders = message.Headers.From.DisplayName; string from = message.Headers.From.Address; string subject = message.Headers.Subject; DateTime Datesent = message.Headers.DateSent; List<MessagePart> messageParts = message.FindAllAttachments(); foreach (var item in messageParts) { if (item.IsAttachment) { if (item.FileName.Contains(".xlsx") || item.FileName.Contains(".xlsx")) File.WriteAllBytes(path + item.FileName, item.Body); } } } } #endregion |
验证outllok邮箱失败及处理
验证outlook邮箱失败是因为访问outook邮箱得走加密方式
-
登录outllok网页邮箱
路径:链接地址 -
设置开启pop

-
请将验证邮箱账号的pop服务地址、pop服务端口号、isUseSSL改成true;如下图:


