如何将原始电子邮件字符串解析为System.Net.Mail.MailMessage对象?

时间:2012-09-22 09:34:52

标签: c# asp.net .net tcp pop3

我在C#编写了一个程序,该程序连接到POP Server并使用POP3命令RETR从服务器检索原始电子邮件消息字符串。 由于程序检索的电子邮件信息是纯文本格式,所有标题和邮件正文都相同,因此很难从原始字符串中提取每个标题和邮件正文。

有人可以告诉我一个解决方案,我可以将整个原始文本解析为System.Net.Mail.MailMessage个对象吗?

以下是电子邮件原始字符串示例:

+OK 1281 octets
Return-Path: <sample@test.in>
Delivered-To: samplenet-sample:in-sample2@test.in
X-Envelope-To: sample2@test.in
Received: (qmail 53856 invoked from network); 22 Sep 2012 06:11:46 -0000
Received: from mailwash18.pair.com (66.39.2.18)
MIME-Version: 1.0
From: "Deepu"
 <sample@test.in>
To: sample2@test.in
Date: 22 Sep 2012 11:41:39 +0530
Subject: TEST Subject
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
Message-Id: <20120922061146.2975C11554D@mailwash18.pair.com>


TEST Body

.

2 个答案:

答案 0 :(得分:6)

经过一番研究后,我可以找到 OpenPop.Net 开源库,该库几乎包含了与POP3服务器通信的所有简便方法。

它非常有用,因为它会将原始电子邮件封装到强类型Message对象,并且电子邮件的不同部分(包括其任何附件)也可以单独访问。这太棒了!

这是链接:

http://hpop.sourceforge.net/

答案 1 :(得分:1)

我目前正在研究同样的事情。本文包含一个将电子邮件字符串解析为自定义电子邮件对象的方法:

http://dotnetslackers.com/articles/aspnet/Creating-a-Dynamic-Email-Drop-Box-Part2.aspx

能够正确解析所有电子邮件需要大量工作。例如,发送日期字段的格式可以不同,并且此脚本仅捕获一种格式。但这个项目是一个良好的开端。