Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将Outlook MailItem对象转换为字节[]_C#_Email_Outlook - Fatal编程技术网

C# 如何将Outlook MailItem对象转换为字节[]

C# 如何将Outlook MailItem对象转换为字节[],c#,email,outlook,C#,Email,Outlook,关于这一点有几个问题,但没有一个能真正提供解决方案 场景-我正在VS2013中创建Outlook加载项。用户选择电子邮件,点击“我的加载项”按钮,然后将电子邮件发送到Web服务,存储在数据库中并链接到客户端。任何地点的任何人都可以打开电子邮件查看它 目前,我正在使用MailItem.SaveAs(filePath)函数,然后使用File.ReadAllBytes(filePath)创建可以发送到Web服务的字节数组 我创建字节[]后立即删除该文件: for (int x = 0; x <

关于这一点有几个问题,但没有一个能真正提供解决方案

场景-我正在VS2013中创建Outlook加载项。用户选择电子邮件,点击“我的加载项”按钮,然后将电子邮件发送到Web服务,存储在数据库中并链接到客户端。任何地点的任何人都可以打开电子邮件查看它

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

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

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

}
for(int x=0;x
将文件写入磁盘的速度很慢-它会创建一个*.msg文件,如果没有人想查看它,它可能永远不会被使用。因此,我希望能够将MailItem对象直接保存到字节数组中,然后我可以将其保存到数据库中,并且仅在用户需要时创建*.msg文件

MailItem对象看起来是动态的,所以我认为这就是问题所在


有人能提供解决方案或替代方法来实现我所描述的吗?

Outlook对象模型和扩展MAPI中的消息不可流化。您可以将邮件保存为特定格式,但不会是完全相同的副本。MSG格式将是您能获得的最接近的格式


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

Outlook对象模型和扩展MAPI中的邮件不可流化。您可以将邮件保存为特定格式,但不会是完全相同的副本。MSG格式将是您能获得的最接近的格式


使用
mailitm.SaveAs(…,olMsg)
将邮件另存为MSG文件。

字节数组必须采用MSG格式吗?嗨,最好是mailitm的字节数组。字节数组必须采用MSG格式吗?嗨,最好是mailitm的字节数组。嗨-这是我在示例
Emails.ElementAt中看到的(x) .SaveAs(文件路径);
。如果我有多个文件,则将文件保存到磁盘的速度很慢,因此我希望有其他选择。没有其他选择。硬盘访问不是问题,实际的属性检索和转换可能会降低您的速度。与通过网络完成的任何操作相比,硬盘访问时间微不足道。您好-这就是原因在示例
中,我有Emails.ElementAt(x).SaveAs(filePath);
。如果我有多个文件,则将文件保存到磁盘的速度很慢,因此我希望有其他选择。没有其他选择。硬盘访问不是问题,实际的属性检索和转换可能会降低您的速度。与通过网络完成的任何操作相比,硬盘访问时间微不足道。