下载QQ、outllook、网易邮件附件
解决方案
这里示例下载QQ邮箱附件,其它邮箱附件下载步骤也是一样的
1.注册QQ邮箱,并开启pop3
2.下载并引用程序集DLL:OpenPop.dll
百度网盘路径:https://pan.baidu.com/s/1Ss9ryPzJxGKdVPavyj3Sjg 提取码:vfxp
3.创建EmailHelper对象
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.验证邮箱是否登录成功
#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
获取邮件数量
#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
下载邮件附件
#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;如下图: