Lumisoft.NET组件是一个非常强大的邮件发送、邮件接收等功能的开源组件,一般用它来处理邮件的相关操作,是非常合适的。之前也写过一些该组件的随笔文章,不过主要是利用来发送邮件居多,最近由于项目需要,需要利用该组件来接收邮件,邮件通过POP3协议进行接收到本地,故对该组件进行了全面的了解和使用。本文主要是在此背景上,介绍该组件的POP3协议处理类的使用。Lumisoft.NET组件2013年作者有做了一定的更新,修复了一些问题,本文是基于该组件的最新版本进行开发使用。
1、POP3登录及头部信息获取
首先使用POP3,必须创建一个POP3_Client的对象,然后通过Connect和Login进行连接和登录处理,相关的代码如下所示。
popClient.Connect(pop3Server, pop3Port, pop3UseSsl);
popClient.Login(username, password);
这些邮件地址的信息,都是通过Mail_t_Mailbox对象来记录,一般包含邮件地址的Address和显示名称DisplayName,这样非常方便用来显示,如我们可以进行转义,记录到数据库里面。
if (mime_header.Cc != null)
{
StringBuilder sb = new StringBuilder();
foreach (Mail_t_Mailbox recipient in mime_header.Cc.Mailboxes)
{
string displayname = recipient.DisplayName;
string address = recipient.Address;
if (!string.IsNullOrEmpty(displayname))
{
sb.AppendFormat("{0}({1});", displayname, address);
}
else
{
sb.AppendFormat("{0};", address);
}
}
info.Carboncopy = sb.ToString().Trim(';');
}
Mail_Message mime_message = Mail_Message.ParseFromByte(messageBytes);
if (mime_message == null) continue;
info.Body = mime_message.BodyText;
try
{
if (!string.IsNullOrEmpty(mime_message.BodyHtmlText))
{
info.Body = mime_message.BodyHtmlText;
}
}
catch
{
//屏蔽编码出现错误的问题,错误在BodyText存在而BodyHtmlText不存在的时候,访问BodyHtmlText会出现
}
if (c.Messages.Count > 0)
{
foreach (POP3_ClientMessage mail in c.Messages)
{
try
{
if (toDeleteMailUidList.Contains(mail.UID))
{
mail.MarkForDeletion();
deletedList.Add(mail.UID);
}
}
catch (Exception ex)
{
LogTextHelper.Error(ex);
}
}
}
}
新闻热点
疑难解答