我正在使用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然后它会工作,但是当我为附件设置这种类型的名称时,它不起作用并且警告出现恶意附件
请建议
答案 0 :(得分:1)
您正在为标头指定cid属性,但您从未设置Content-ID MIME标头。要在邮件转换为MIME时进行设置,您需要使用Attachment.PropertyAccessor.SetProperty设置PR_ATTACH_CONTENT_ID MAPI属性(DASL名称“http://schemas.microsoft.com/mapi/proptag/0x3712001F”)。
答案 1 :(得分: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()