Csharp/C#教程:如何将Outlook MailItem对象转换为byte分享


如何将Outlook MailItem对象转换为byte

有一些Stackoverflow问题,但没有一个真正提供解决方案。

场景 – 我在VS2013中创建了一个Outlook AddIn。 用户选择电子邮件,点击我的AddIn按钮,电子邮件被发送到web服务,存储在数据库中并链接到客户端。 任何人都可以在任何位置打开电子邮件进行查看。

目前我正在使用MailItem.SaveAs(filePath)函数,然后使用File.ReadAllBytes(filePath)创建一个可以发送到Web服务的字节数组。

我创建byte []后立即删除该文件:

 for (int x = 0; x < Emails.Count; x++) { //TODO: RMc - is there a better way than saving to disk? unable to convert MailItem directly to stream...! Guid g = Guid.NewGuid(); string filePath = "c:\temp\" + g.ToString() + ".msg"; Emails.ElementAt(x).SaveAs(filePath); byte[] by = File.ReadAllBytes(filePath); File.Delete(filePath);//no longer needed now we have byte array //this is where I create a list of objects with all required data to send to web service } 

将文件写入磁盘很慢 – 它会创建一个* .msg文件,如果没有人想查看它,它可能永远不会被使用。 所以我希望能够将MailItem对象直接保存到字节数组 – 然后我可以将其保存到数据库中,只有在用户需要时才创建* .msg文件。

MailItem对象由动态显示,因此我认为这是问题所在。

任何人都可以提供解决方案或实现我所描述的替代方法吗?

Outlook对象模型和扩展MAPI中的邮件不可流式传输。 您可以以特定格式保存邮件,但它不是精确副本。 MSG格式将是您可以获得的最接近的格式。

使用MailItem.SaveAs(..., olMsg)将消息另存为MSG文件。

上述就是C#学习教程:如何将Outlook MailItem对象转换为byte分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1017141.html

(0)
上一篇 2022年1月1日
下一篇 2022年1月1日

精彩推荐