在内存而不是文件系统中将MailItem转换为MSG

时间:2017-06-08 12:36:16

标签: c# .net outlook ms-office msg

目前,我通过将mailItem编写为MSG文件来编码mailItem,其中包含:

 mailItem.SaveAs(@"c:\path\to\save\mail.msg", Outlook.OlSaveAsType.olMSG);
 FileStream fs = new FileStream( fullPath, FileMode.Open, FileAccess.Read );
 byte[] filebytes = new byte[fs.Length];
 fs.Read( filebytes, 0, Convert.ToInt32( fs.Length ) );
 string encodedData = Convert.ToBase64String( filebytes, 
 Base64FormattingOptions.InsertLineBreaks );

我看起来很长很难,没有把MSG写到硬盘上就找不到办法。

我是否有办法在不需要写入硬盘的情况下执行此操作?

谢谢!

2 个答案:

答案 0 :(得分:0)

Per Justin Cooney(强调他的):

  

Outlook.MailItem 对象实际上是 COM 对象,无法动态保存/加载。要实现所需的保存/加载功能,Outlook 首先需要转换为 .MSG 文件。

这也是我想做的事情,但由于上述限制,唉不能。我目前正在将文件写入临时位置,传递路径,转换为Base64字符串并在成功后删除该文件。

答案 1 :(得分:0)

不,不使用OOM。它可以在扩展MAPI(C ++或Delphi)中使用。