为什么一个图像embedded成功的电子邮件与.Display但不是。发送?

这是我觉得很奇怪,很难解决的事情,我有以下代码:

Sub EmailImage() Dim oApp As Outlook.Application Dim oEmail As MailItem Dim colAttach As Outlook.Attachments Dim oAttach As Outlook.Attachment Set oApp = CreateObject("Outlook.Application") Set oEmail = oApp.CreateItem(olMailItem) Set colAttach = oEmail.Attachments Set oAttach = colAttach.Add("C:\Users\User1\Documents\thumbs-up.jpg") oEmail.Close olSave oEmail.To = "abc@abc123.com" oEmail.HTMLBody = "<IMG alt='' hspace=0 src='cid:thumbs-up.jpg' align=baseline border=0>&nbsp;</BODY>" oEmail.Display Set oEmail = Nothing Set colAttach = Nothing Set oAttach = Nothing Set oApp = Nothing End Sub 

使用.Display代码,图像embedded成功,一旦图像显示,您点击发送,接收者可以看到电子邮件中的图像,如下所示:

在这里输入图像说明

但问题是我有很多电子邮件发送,所以使用.Display而不是.Display ,一旦我这样做,但图像被附加到电子邮件,但不能在其中看到。

以下是更改后的代码:

 Sub EmailImage() Dim oApp As Outlook.Application Dim oEmail As MailItem Dim colAttach As Outlook.Attachments Dim oAttach As Outlook.Attachment Set oApp = CreateObject("Outlook.Application") Set oEmail = oApp.CreateItem(olMailItem) Set colAttach = oEmail.Attachments Set oAttach = colAttach.Add("C:\Users\User1\Documents\thumbs-up.jpg") oEmail.Close olSave oEmail.To = "abc@abc123.com" oEmail.HTMLBody = "<IMG alt='' hspace=0 src='cid:thumbs-up.jpg' align=baseline border=0>&nbsp;</BODY>" oEmail.Send Set oEmail = Nothing Set colAttach = Nothing Set oAttach = Nothing Set oApp = Nothing End Sub 

以及在电子邮件中可以看到的图像:

在这里输入图像说明

我不知道为什么发生这种情况,有人可以帮忙吗?

请注意,我正在使用Windows 7,Excel 2010和Outlook 2010。

您需要将附件上的PR_ATTACH_CONTENT_ID属性(DASL名称http://schemas.microsoft.com/mapi/proptag/0x3712001F )设置为与HTML正文中的img标记的cid属性匹配的值。

 Set oAttach = colAttach.Add("C:\Users\User1\Documents\thumbs-up.jpg") oAttach.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F", "MyCid" ... oEmail.HTMLBody = "<IMG alt='' hspace=0 src='cid:MyCid' align=baseline border=0>&nbsp;</BODY>" 

这对我工作:

 Sub EmailImage() Dim oApp As Object Dim oEmail As Object Set oApp = CreateObject("Outlook.Application") Set oEmail = oApp.CreateItem(olMailItem) Set colAttach = oEmail.Attachments Set oAttach = colAttach.Add("C:\Users\User1\Documents\thumbs-up.jpg") oEmail.Close olSave oEmail.To = "abc@abc123.com" oEmail.HTMLBody = "<IMG alt='' hspace=0 src='cid:thumbs-up.jpg' align=baseline border=0>&nbsp;</BODY>" oEmail.Send Set oEmail = Nothing Set colAttach = Nothing Set oAttach = Nothing Set oApp = Nothing End Sub