我注意到当有人复制粘贴电子邮件然后发送它时,图像的“src”值会发生变化。例如,如果原始电子邮件的图像是附件,其contentId是:cid:companlyLogo。然后有人将此电子邮件复制粘贴到新草稿中并将此src值更改发送到:src =“cid:image001.jpg@01CCF6B1.A4CA2FE0”。
我对如何获取此图像并将其保存在c#中的图像对象中一无所知。我目前正在使用EWS api来执行此操作。问题是,因为它的复制粘贴它不再具有作为原始电子邮件的附件。
有没有人知道如何检索此类电子邮件的图像?
答案 0 :(得分:3)
Exchange将嵌入图像视为电子邮件附件。这意味着您可以从Item.Attachments
属性中检索图像。以下示例说明如何使用EWS托管API执行此操作。请注意,除非您通过调用LoadPropertiesForItems
明确告知附件,否则EWS不会加载附件。
您可以通过检查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));
}
}