c#outlook add-in将msg转换为eml

时间:2011-04-08 11:35:44

标签: c# outlook eml

有没有办法在outlook中读取邮件(使用加载项)并将其另存为EML文件?

2 个答案:

答案 0 :(得分:1)

您可以通过两种方式实现目标:

  1. 您可以以编程方式进行操作。 尝试使用第三方库Aspose.Email for .Net。 这是一个很棒的库,可用于基本的电子邮件管理功能。在这种情况下,我们将使用转换。 此外,该库能够处理和编辑消息,通过多种协议发送和接收电子邮件以及使用消息存储文件。

使用以下代码,您可以轻松地将MSG转换为EML。看看使用Aspose.Email for .NET有多简单。

using (var message = Aspose.Email.MailMessage.Load("template.msg»))
{  
    message.Save("output.eml", Aspose.Email.SaveOptions.DefaultEml); 
}
  1. 使用在线转换器。 如果您不想以编程方式进行操作,则可以通过在线转换器来进行。您可以使用Aspose.Email Conversion。 这是一个免费的在线转换器,可为您提供从MSG到多种不同文件格式的转换。它具有友好的用户界面。

答案 1 :(得分:0)

您可以

1)一次在您的代码中显式创建MIME文件一个属性。您还可以使用现有的MIME转换器(我过去曾使用Lumisoft)-但是它们不会在单个调用中转换Outlook消息。您将需要显式构建所有标头和MIME部分。

2)使用IConverterSession对象(仅C ++或Delphi)-这与Outlook使用的MIME转换器相同。您可以在OutlookSpy中使用它(单击IConverterSession按钮)。

3)使用Redemption及其RDOMail。SaveAs或SafeMailItem。SaveAs方法-它可以以MIME格式(olRfc822)以及其他十几种格式保存。当可用(Outlook 2003及更高版本)或用于较早版本的Outlook或针对Exchange API的MAPI使用它时,它使用IConverterSession对象。
以下脚本(VBS)将在Outlook中将当前选定的邮件另存为EML文件

  set Session = CreateObject("Redemption.RDOSession")
  Session.MAPIOBJECT = Application.Session.MAPIOBJECT
  set rItem = Session.GetMessageFromID(Application.ActiveExplorer.Selection(1).EntryID)
  rItem.SaveAs "c:\temp\test.eml", 1024