MailHelper ,使用OpenPop读取邮件、获取附件、删除邮件等
using OpenPop.Mime;
using OpenPop.Mime.Header;
using OpenPop.Pop3;
using OpenPop.Pop3.Exceptions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyHelpers
{
public class MessageHeaderWrap
{
public MessageHeader Message;
public int MessageId;
}
public class MailHelper
{
#region 私有变量
private string account;
private string password;
private string popServer;
private int popPort;
private bool IsUseSSL;
#endregion
#region 构造函数
public MailHelper(string _account, string _password, string _popServer, int _popPort, bool _IsUseSSL)
{
account = _account;
password = _password;
popServer = _popServer;
popPort = _popPort;
IsUseSSL = _IsUseSSL;
}
#endregion
#region 方法
public bool ValidateAccount(ref string error)
{
Pop3Client client = new Pop3Client();
string message = "account:" + account + " password" + password + " popServer:" + popServer + " popPort:" + popPort + " IsUseSSL:" + IsUseSSL;
try
{
client.Connect(popServer, popPort, IsUseSSL);
client.Authenticate(account, password);
}
catch (InvalidLoginException ex)
{
error = "邮箱登录失败";
return false;
}
catch (InvalidUseException ex)
{
error = "邮箱登录失败";
return false;
}
catch (PopServerNotFoundException ex)
{
error = "服务器没有找到";
return false;
}
catch (PopServerException ex)
{
error = "请在邮箱开通POP3/SMTP";
return false;
}
catch (Exception ex)
{
error = "连接出现异常";
return false;
}
client.Disconnect();
return true;
}
public List GetMessageList()
{
List headers = new List();
using (Pop3Client client = new Pop3Client())
{
client.Connect(popServer, popPort, IsUseSSL);
client.Authenticate(account, password);
int messageCount = client.GetMessageCount();
for (int i = messageCount; i > 0; i--)
{
try
{
MessageHeaderWrap h = new MessageHeaderWrap() { Message = client.GetMessageHeaders(i), MessageId = i };
headers.Add(h);
}
catch
{ }
}
}
return headers;
}
///
/// 获取邮件列表ids
///
///
public List GetNewMailIds()
{
List mailIds = new List();
using (Pop3Client client = new Pop3Client())
{
try
{
client.Connect(popServer, popPort, IsUseSSL);
client.Authenticate(account, password);
int messageCount = client.GetMessageCount();
for (int i = messageCount; i > 0; i--)
{
mailIds.Add(i.ToString());
}
}
catch (Exception ex)
{
throw new Exception("获取邮件ID列表出错,异常信息:" + ex.Message);
}
}
return mailIds;
}
public List GetMessageList(int currentPageIndex, int pageSize, ref int messageCount)
{
List headers = new List();
using (Pop3Client client = new Pop3Client())
{
client.Connect(popServer, popPort, IsUseSSL);
client.Authenticate(account, password);
messageCount = client.GetMessageCount();
var begin = messageCount - currentPageIndex * pageSize;
var end = messageCount - ((currentPageIndex + 1) * pageSize);
while (begin > end
&& begin > 0)
{
try
{
MessageHeaderWrap h = new MessageHeaderWrap() { Message = client.GetMessageHeaders(begin), MessageId = begin };
headers.Add(h);
}
catch
{
end--;
}
begin--;
}
}
return headers;
}
public MessagePart GetAttachment(Message m, string filename)
{
List list2 = m.FindAllAttachments();
foreach (MessagePart attach in list2)
{
if (attach.FileName.ToLower() == filename.ToLower())
{
return attach;
}
}
return null;
}
public MessagePart GetAttachment(string messageID, string filename)
{
using (Pop3Client client = new Pop3Client())
{
client.Connect(popServer, popPort, IsUseSSL);
client.Authenticate(account, password);
Message m = client.GetMessage(int.Parse(messageID));
List list2 = m.FindAllAttachments();
foreach (MessagePart attach in list2)
{
if (attach.FileName.ToLower() == filename.ToLower())
{
return attach;
}
}
}
return null;
}
public List GetAttachments(string messageID)
{
using (Pop3Client client = new Pop3Client())
{
client.Connect(popServer, popPort, IsUseSSL);
client.Authenticate(account, password);
Message m = client.GetMessage(int.Parse(messageID));
return m.FindAllAttachments();
}
}
public Message GetMessage(int index)
{
List headers = new List();
Message m = null;
try
{
using (Pop3Client client = new Pop3Client())
{
client.Connect(popServer, popPort, IsUseSSL);
client.Authenticate(account, password);
m = client.GetMessage(index);
}
}
catch (Exception ex)
{
throw new Exception("获取邮件出现异常信息:"+ex.Message+" messageID为:" + index);
}
return m;
}
///
/// 根据id 删除邮件
///
/// 邮件id
public void DeleteMessage(string messageId)
{
try
{
using (Pop3Client client = new Pop3Client())
{
client.Connect(popServer, popPort, IsUseSSL);
client.Authenticate(account, password);
client.DeleteMessage(int.Parse(messageId));
}
}
catch (Exception ex)
{
throw new Exception("删除邮件出现异常信息:"+ex.Message+" messageID为:" + messageId);
}
}
#endregion
}
}
本文介绍了如何借助MailHelper类利用OpenPop库来实现邮件的读取、附件的获取以及邮件的删除等操作。

1014

被折叠的 条评论
为什么被折叠?



