不使用Outlook(COM对象等)或第三方软件将电子邮件另存为MSG文件

时间:2014-10-23 16:06:12

标签: email powershell outlook exchange-server exchangewebservices

现在,我正在使用带有PowerShell的Exchange Web服务API从交换中提取特定电子邮件并将其另存为EML文件。这很好用;但是,用户/客户要求电子邮件采用msg格式。我见过有两种方法可以做到这一点:

还有其他选择吗?如果可能的话,我想坚持使用PowerShell,但似乎EWS可能仅限于编写EML文件。

MSG与EML要求(合规性)没有灵活性。

修改 这将在服务器上运行;所以我希望如果没有安装Outlook就可以完成。

2 个答案:

答案 0 :(得分:0)

您仍然可以将PowerShell与Outlook对象模型(OOM)一起使用,如果这是您所希望的。

您还可以使用Redemption,它具有比OOM更多的功能(它也可以在服务中运行,不会触发Outlook安全提示等)。

答案 1 :(得分:0)

您可以在代码中显式创建MSG文件(它是一个OLE存储(IStorage)文件,其格式为documented) - 解析EML文件,然后在MSG文件中填充各种MAPI属性。 / p>

您也可以使用Redemption。将EML文件转换为MSG就像

一样简单
  RDOSession Session = new RDOSession();
  RDOMail Msg = Session.CreateMessageFromMsgFile(@"c:\temp\YourMsgFile.msg");
  Msg.Import(@"c:\temp\YourEmlFile.eml", rdoSaveAsType.olRFC822);
  Msg.Save();