C# 如何将Outlook MailItem对象转换为字节[]
关于这一点有几个问题,但没有一个能真正提供解决方案 场景-我正在VS2013中创建Outlook加载项。用户选择电子邮件,点击“我的加载项”按钮,然后将电子邮件发送到Web服务,存储在数据库中并链接到客户端。任何地点的任何人都可以打开电子邮件查看它 目前,我正在使用C# 如何将Outlook MailItem对象转换为字节[],c#,email,outlook,C#,Email,Outlook,关于这一点有几个问题,但没有一个能真正提供解决方案 场景-我正在VS2013中创建Outlook加载项。用户选择电子邮件,点击“我的加载项”按钮,然后将电子邮件发送到Web服务,存储在数据库中并链接到客户端。任何地点的任何人都可以打开电子邮件查看它 目前,我正在使用MailItem.SaveAs(filePath)函数,然后使用File.ReadAllBytes(filePath)创建可以发送到Web服务的字节数组 我创建字节[]后立即删除该文件: for (int x = 0; x <
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);
。如果我有多个文件,则将文件保存到磁盘的速度很慢,因此我希望有其他选择。没有其他选择。硬盘访问不是问题,实际的属性检索和转换可能会降低您的速度。与通过网络完成的任何操作相比,硬盘访问时间微不足道。