山东凯远集团,陈元方年十一时,sm小游戏
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);
}
}
}
}
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论