从电子邮件中获取图片
问题描述:
我注意到,当有人复制粘贴电子邮件然后发送它时,图像的“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));
}
}