千家信息网

Lumisoft.NET组件POP3邮件接收与删除操作怎么用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章给大家分享的是有关Lumisoft.NET组件POP3邮件接收与删除操作怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Lumisoft.NET组件是一个非常强
千家信息网最后更新 2026年11月01日Lumisoft.NET组件POP3邮件接收与删除操作怎么用

这篇文章给大家分享的是有关Lumisoft.NET组件POP3邮件接收与删除操作怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Lumisoft.NET组件是一个非常强大的邮件发送、邮件接收等功能的开源组件,一般用它来处理邮件的相关操作,是非常合适的。

1、POP3登录及头部信息获取

首先使用POP3,必须创建一个POP3_Client的对象,然后通过Connect和Login进行连接和登录处理,相关的代码如下所示。

复制代码 代码如下:


using (POP3_Client popClient = new POP3_Client())
{
popClient.Logger = new Logger();
popClient.Logger.WriteLog += new EventHandler(WriteLog);

popClient.Connect(pop3Server, pop3Port, pop3UseSsl);
popClient.Login(username, password);

POP3的的邮件下载通过POP3_Client 对象的属性Messages对象进行,每个POP3_ClientMessage代表一份完整的邮件信息,一开始应该是只是获取一些简单的邮件信息(其中包括邮件的唯一标识UID),这样才能提高POP3协议的处理速度,如下代码所示。

复制代码 代码如下:


foreach (POP3_ClientMessage message in popClient.Messages)


为了进一步获取邮件头部信息,那么需要进行下面的转换

复制代码 代码如下:


Mail_Message mime_header = Mail_Message.ParseFromByte(message.HeaderToByte());


转换后Mail_Message承载了邮件头部文件的很多必备信息,如发送人,发送人名称,接收地址,抄送人地址,邮件标题,邮件日期等等信息。

这些邮件地址的信息,都是通过Mail_t_Mailbox对象来记录,一般包含邮件地址的Address和显示名称DisplayName,这样非常方便用来显示,如我们可以进行转义,记录到数据库里面。

复制代码 代码如下:


if (mime_header.From != null)
{
//(wuhuacong@163.com)
string displayname = mime_header.From[0].DisplayName;
string from = mime_header.From[0].Address;// DecodeString(mime_header.From[0].Address);
if (!string.IsNullOrEmpty(displayname))
{
info.From = string.Format("{0}({1})", displayname, from);
}
else
{
info.From = string.Format("{0}", from);
}
}

复制代码 代码如下:


if (mime_header.To != null)
{
StringBuilder sb = new StringBuilder();
foreach (Mail_t_Mailbox recipient in mime_header.To.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.Senders = sb.ToString().Trim(';');
}

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(';');
}

每封Email会有一个在Pop3服务器范围内唯一的Id,检查这个Id是否存在就可以知道以前有没有接收过这封邮件

复制代码 代码如下:


info.MailUid = message.UID;


每份邮件的头部信息,都会包含一个日期的,如下可以获取到该日期

复制代码 代码如下:


info.Date = mime_header.Date;


标题信息可以通过下面代码获取

复制代码 代码如下:


info.Title = mime_header.Subject;/


2、邮件正文信息和附件信息的获取

如果需要进一步获取邮件的正文内容,则需要对信息进行进一步的转换,把message对象进行MessageToByte操作,然后利用函数Mail_Message.ParseFromByte进行转换。

复制代码 代码如下:


byte[] messageBytes = message.MessageToByte();

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会出现
}

邮件的附件是通过MIME_Entity来承载信息的,所以我们需要把对象通过mime_message.GetAttachments(true, true)进行获取,转换为附件信息。

复制代码 代码如下:


#region 邮件附件内容
foreach (MIME_Entity entity in mime_message.GetAttachments(true, true))
{
if (entity.ContentDisposition != null &&
entity.ContentDisposition.Param_FileName != null)
{
//Console.WriteLine("Attachment: " + entity.ContentDisposition.Param_FileName);
string fileName = entity.ContentDisposition.Param_FileName;


如果需要进一步获取附件里面的文件字节流,那么还需要进行进一步的转换为MIME_b_SinglepartBase对象。

复制代码 代码如下:


MIME_b_SinglepartBase byteObj = (MIME_b_SinglepartBase)entity.Body;
if (byteObj != null)
{
FileUtil.CreateFile(filePath, byteObj.Data);
fileSize = byteObj.Data.Length;


如果要区分邮件里面的附件是内嵌图片附件还是真正的附件,那么可以通过下面代码进行判断,如果是MIME_DispositionTypes.Attachment的就是普通附件,MIME_DispositionTypes.Inline的就是内嵌正文的附件。

复制代码 代码如下:


entity.ContentDisposition.DispositionType == MIME_DispositionTypes.Attachment


3、邮件的删除操作

服务器上的邮件,可以通过POP3的协议方式进行删除,删除操作很简单,主要是通过mail.MarkForDeletion进行标识即可,实例操作代码如下所示

复制代码 代码如下:


using (POP3_Client c = new POP3_Client())
{
c.Connect(pop3Server, pop3Port, pop3UseSsl);
c.Login(username, password);

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);
}
}
}
}

感谢各位的阅读!关于"Lumisoft.NET组件POP3邮件接收与删除操作怎么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

代码 邮件 信息 附件 对象 进一 组件 内容 地址 头部 可以通过 日期 正文 处理 就是 文件 更多 服务器 标识 标题 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南京欣网互联网络科技有限公司 深圳恒合互联网络科技有限公司 科技企业和互联网企业 科技类互联网 互联网科技小额贷款 火传媒上海互联网科技 互联网科技网站 互联网养老 桔豆科技 成都铂石互联网科技做什么的 互联网软件和科技 花神(南京)互联网科技有限公司 互联网科技公司有风险吗 互联网科技商业 洛阳昕诺飞互联网科技有限公司 深圳育鹏互联网科技有限公司招聘 如何创新互联网科技 梅州GM互联网络科技有限公司 35岁以上互联网科技行业 广州有谷有贝互联网科技有限公司 版纳互联网科技选哪家 苏州找大状互联网科技有限公司 北京路客互联网科技有限公司 美国互联网科技巨头监管 广州互联网络科技有限公司 智慧科技互联网 深圳市运趣互联网科技有限公司 互联网科技与管理 速维有品互联网信息科技(苏州)有限公司 呼和浩特新华互联网科技学院 高科技互联网套路
0