从电子邮件中获取图片

问题描述:

我注意到,当有人复制粘贴电子邮件然后发送它时,图像的“src”值发生变化。例如,如果原始电子邮件的图像是附件,并且其contentId是:cid:companlyLogo。然后有人将此电子邮件复制粘贴到新草稿中,并将此src值更改为:src =“cid:[email protected]”。从电子邮件中获取图片

我不知道如何获取此图像并将其保存在c#中的图像对象。目前我正在使用EWS API进行此操作。问题是,自从它复制粘贴后,它不再具有作为原始电子邮件的附件。有没有人有任何想法如何检索这种类型的电子邮件的图像??????我现在正在为此操作2天:(

嵌入式图像被Exchange视为电子邮件附件,这意味着您可以从Item.Attachments属性中检索图像。以下示例显示如何使用EWS Managed API。请注意,EWS不会加载附件,除非你明确告诉它通过调用LoadPropertiesForItems

你可以告诉附件通过检查Attachment.IsInline属性嵌入。EWS让您加载附件并保存到磁盘调用FileAttachment.Load方法。

ExchangeService service = GetService(); 
var view = new ItemView(1); 
var searchFilter = new SearchFilter.IsEqualTo(EmailMessageSchema.Subject, "Some subject text"); 
var items = service.FindItems(WellKnownFolderName.Inbox, searchFilter, view); 
service.LoadPropertiesForItems(items, new PropertySet(BasePropertySet.FirstClassProperties, EmailMessageSchema.Attachments)); 

var item = items.ElementAt(0) as EmailMessage; 

for (int i = 0; i < item.Attachments.Count; i++) 
{ 
    var att = item.Attachments[i] as FileAttachment; 
    if (att.IsInline && att.ContentType.Contains("image")) 
    { 
     att.Load(String.Format(@"c:\temp\attachedimage_{0}.jpg", i)); 
    } 
}