0

我正在使用 Microsoft.Office.Interop.Outlook.MailItem 发送电子邮件,它是一个 html 电子邮件,其正文中有一些图像,我将图像作为这样的附件发送

mailItem.Attachments.Add(path + "Header.png", (int)OlAttachmentType.olByValue, 1, "Header");

然后设置身体

string body=”<img src="cid:{0}" width="627" height="125" alt="Header">”
mailItem.BodyFormat = OlBodyFormat.olFormatHTML;                
mailItem.HTMLBody = string.Format(body, "Header.png") ;

在 MS Outlook 中一切正常,但图像在 Hotmail(outlook.com)和 Gmail 中显示为附件,但在 MS Outlook 中,图像显示在正文中应该显示的位置

我搜索并找到了这样的解决方案,如果我为我的图像设置 cid,例如域名,例如 Header.png@somedomain.com,那么它会起作用,但它不起作用,并且当我设置这种类型的名称时会出现恶意附件的警告附件

请建议

4

2 回答 2

1

您正在为标头指定 cid 属性,但您从未设置 Content-ID MIME 标头。要在将消息转换为 MIME 时设置它,您需要使用 Attachment.PropertyAccessor.SetProperty 设置 PR_ATTACH_CONTENT_ID MAPI 属性(DASL 名称“ http://schemas.microsoft.com/mapi/proptag/0x3712001F ”)。

于 2013-07-18T14:27:21.260 回答
0

这是您可以嵌入的图像,它将嵌入到 Hotmail 和 Gmail 中: 此代码在 python 3.9.1 中。

import win32com.client
outlook = win32com.client.Dispatch("outlook.application")
mail = outlook.CreateItem(0)
attachment = mail.Attachments.Add(embedImgPath) 
attachment.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F","MyId1")
mail.HTMLBody = f"<html><body> {htmlbody} <br> <img src="" cid:MyId1""> </body></html>"
mail.send()
于 2021-03-31T12:17:07.897 回答