是否可以在.net中读取.eml文件

Cod*_*iwi 4 vb.net asp.net file

我想知道是否可以解析点网中的.eml和.msg文件(最好是从内存流中解析),以便我可以在ASP.Net页面上使用它们.

Dan*_*ite 5

是的你可以。它们只是普通的文本文件,没什么花哨的。

这就是里面的eml文件的样子

X-Sender: somewhere@google.com
X-Receiver: somewhere@google.com
MIME-Version: 1.0
From: somewhere@google.com
To: somewhere@google.com
Date: 7 Jun 2009 18:58:01 -0400
Subject: From someone you know
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable

This is the body
Run Code Online (Sandbox Code Playgroud)


Mar*_*obr 5

EML(MIME消息)

在大多数情况下,EML是带有邮件消息的MIME编码文件.EML文件的常见来源包括从Outlook Express或Thunderbird保存的消息,从IMAP或POP3服务器下载的消息.

正确加载EML文件并不像看起来那么容易.您可以在几天内编写一个在95%的情况下工作的实现.剩下的5%至少需要几个月;-).我知道,因为我参与了一个开发.

考虑以下困难:

  • unicode电子邮件
  • 从右到左的语言
  • 纠正由流行的邮件客户端和服务器中众所周知的错误导致的格式错误的EML文件
  • 处理S/MIME(加密和签名的电子邮件)
  • 正确处理几种编码附件的方法
  • 处理嵌入到HTML电子邮件中的内嵌图像和样式表
  • 确保它正确解析来自Mike Crispin(Mime和IMAP RFC的合着者)的MIME酷刑消息
  • 确保格式错误的消息不会导致缓冲区溢出或其他应用程序崩溃
  • 处理分层消息(带附加消息的消息)
  • 确保它正确处理非常大的电子邮件

这种解析器的成熟需要数年时间并且不断为用户提供反馈.现在,.NET Framework中没有包含此类解析器.在它发生变化之前,我建议从已建立的供应商处获取第三方MIME解析器.

以下代码使用我们的Rebex安全邮件组件,但我确信类似的任务也可以使用其他供应商的组件轻松复制.

该代码基于邮件消息教程.

// create an instance of MailMessage 
MailMessage message = new MailMessage();

// load the message from a local disk file 
message.Load("c:\\message.eml");

// load the message from MemoryStream
MemoryStream stream = new MemoryStream(); 
// TODO: fill the stream, seek to the beginning
message.Load(stream);
Run Code Online (Sandbox Code Playgroud)

MSG(Outlook消息)

MSG格式是Microsoft在Microsoft Outlook中引入的电子邮件格式.Microsoft网站上MSG格式规范.您可能还想尝试第三方组件.我知道IndependentSoft的一个MSG格式组件,但没有亲自尝试过.此外,我们的Rebex Secure Mail版本1.0.4060.0或更高版本也支持MSG格式.