2016-06-28 80 views
0

我试图从Outlook MailItem(HTML-Body)保存嵌入式图像,但是我没有找到嵌入式图像存储在哪个属性中,以及如何保存它。C#:保存来自Outlook MailItem的嵌入式图像

我试图从属性.Attachments(我试过索引0)的图像,但然后抛出一个异常抛出,数组索引超出范围。这意味着,电子邮件中没有附件。

但是,如果图像没有存储在“附件”中,图像存储在哪里以及如何将其保存到文件系统?

非常感谢您提前回答您的问题!

问候 马蒂亚斯

+0

是实际存储在mailitem对象中的图像?它可能是指向某个服务器的实际存储位置的正文html的链接。您也可以使用[OutlookSpy](http://www.dimastr.com/outspy/home.htm)浏览Outlook中的outlook对象并检查其属性。 –

+0

是的,图像存储在mailitem对象中。我可以在HTML-Body中的HTML-Text链接中看到它。不幸的是,我不允许在我的电脑上安装OutlookSpy。 – hias116

+0

附件集合是基于1的,而不是0. –

回答

0

我发现我自己的解决方案。

问题是,我通过其他线程访问MailItem。我不知道为什么,但从这个线索你看不到附件。把邮件阅读部分放在里面

this.Dispatcher.Invoke(new Action(() => { ... })); 

它工作正常。然后你可以访问这个代码的内嵌图像...

if (mail.Attachments.Count > 0) 
{ 
    for (int i = 1; i <= mail.Attachments.Count; i++) 
    { 
     mail.Attachments[i].SaveAsFile(@"C:\Test\" + mail.Attachments[i].FileName); 
    } 
}