文件,我想知道是否有可能以点网(最好从一个MemoryStream)解析的.eml和.msg文件,这样我可以在ASP中使用它们。网页。是否可以读取的.eml在.NET
回答
当然可以。他们只是普通的文本文件,没什么奇特的。
这是一个EML文件看起来像什么在里面
X-Sender: [email protected]
X-Receiver: [email protected]
MIME-Version: 1.0
From: [email protected]
To: [email protected]
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
EML(MIME消息)
EML在大多数情况下MIME编码与邮件文件。 EML文件的常见来源包括从Outlook Express或Thunderbird保存的消息,从IMAP或POP3服务器下载的消息。
正确加载EML文件并不像看起来那么容易。您可以在几天内编写一个在95%情况下工作的实现。剩下5%至少需要几个月;-)。我知道,因为我参与了发展。
考虑以下困难:
- unicode的电子邮件
- 从右到左的语言
- 纠正流行的邮件客户端造成众所周知的错误畸形EML文件和服务器
- 处理S/MIME(加密和签名的电子邮件)
- 用编码附件的几种方法正确处理
- 处理内嵌图片和样式表嵌入到HTML电子邮件
- 确保它解析正确地从迈克·克里斯平(MIME和IMAP的RFC的合着者)一个MIME torture message
- 确保不良消息不会导致缓冲区OVERUN或其他应用程序崩溃
- 处理分层消息(消息附带消息)
- 确保其正确处理非常大的邮件
成熟等解析器需要数年时间和连续的反馈为它的用户。现在,.NET框架中没有包含这样的解析器。直到它改变,我会建议从一个建立的供应商获得第三方MIME解析器。
下面的代码使用我们的Rebex Secure Mail component,但我敢肯定,类似的任务可以很容易地与其他供应商的组件被复制为好。
的代码是基于Mail Message tutorial。
// 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);
MSG(Outlook邮件)
MSG格式是由微软在Microsoft Outlook引入一个电子邮件消息格式。有MSG format specification on Microsoft site。您可能还想尝试第三方组件。我知道一个MSG format component from IndependentSoft,但没有亲自尝试过。我们的Rebex Secure Mail版本1.0.4060.0或更高版本也支持MSG格式。
使用CDOSYS.DLL为EML文件
您可以将这个“正常”呢(当然不是试图去解析它作为一个文本文件更好)使用COM CDOSYS.DLL(“微软CDO的Windows 2000年图书馆“)。
您需要通过添加引用来为它创建一个.Net包装:因为它取决于ADODB.dll,因此您会在您的bin中为您创建Interop.CDO.dll和Interop.ADODB.dll目录。
有很多的信息,各地使用CDO,但几乎没有关于使用它来读取EML文件发送电子邮件,但我发现这个页面,让我开始http://support.microsoft.com/kb/310224
- 1. 如何使用.net读取eml文件?
- 2. 是否可以读取访客的Cookie?
- 3. 是否可以读取锁定文件?
- 4. 是否可以使用PHPWord读取MSWORD?
- 5. 是否可以从stdout读取?
- 6. 是否可以读取IE Session cookies?
- 7. 是否可以读取跨域cookie?
- 8. 是否可以从VBO读取?
- 9. 是否可以读取.exe文件?
- 10. 是否有可能在.NET WMQ API中读取JMSDeliveryMode属性?
- 11. 是否有可能在.NET 3.5中读取页面MetaKeywords?
- 12. 是否可以将PHP PEAR SMTP Object保存为EML文件?
- 13. 是否可以读取.Net应用程序中的Paradox 7.x .db文件?
- 14. 是否可以确定是否从SecureStream读取将被阻止?
- 15. 是否可以在PHP中读取大的xlsx文件?
- 16. 是否可以读取存储在计算机上的文件?
- 17. 是否可以在JavaScript中读取图像的像素?
- 18. 是否可以在程序代码中读取IceBreak'marker'的内容?
- 19. 是否可以在SML中的数字列表中读取?
- 20. 是否可以在html中阅读pdf?
- 21. 是否可以在Silverlight中读取excel文件?
- 22. 在Java中可以读取双打是否线程安全?
- 23. 是否可以在集合级别设置读取首选项?
- 24. 是否可以在编译时加载/读取shape_predictor_68_face_landmarks.dat?
- 25. 在异常之前是否可以读取答案?
- 26. 在重定向之前是否可以读取STDOUT?
- 27. 是否可以在Perl中使用Config :: General来读取__DATA__?
- 28. 是否可以在SQL Server中读取电子邮件回复?
- 29. 是否可以在Node.js中只读取一个变量
- 30. 是否有可能在.NET
嗯......好,很好,我想。 eml是从outlook保存的默认电子邮件标准,但事实证明.msg是(它似乎不是文本格式),那么.eml文件从哪里来? – CodeKiwi 2009-07-19 23:37:16
当您设置分拣目录时,Outlook Express和那些ASP.NET将脱机。 – 2009-07-19 23:39:01