【发布时间】:2015-10-23 00:07:57
【问题描述】:
我正在尝试在 VBA 中运行将发送 HTML 电子邮件的代码,并尝试在电子邮件中嵌入图像。我有以下代码:
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> </BODY>"
oEmail.Send
Set oEmail = Nothing
Set colAttach = Nothing
Set oAttach = Nothing
Set oApp = Nothing
End Sub
但是发生的情况是图像已附加,但其中有一个带有红十字的框,其中图像应该是,如下图所示:
我已尝试对代码进行以下调整:
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")
oAttach.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F", "MyCid")
oEmail.Close olSave
oEmail.To = "abc@abc123.com"
oEmail.HTMLBody = "<IMG alt='' hspace=0 src='cid:MyCid' align=baseline border=0> </BODY>"
oEmail.Send
Set oEmail = Nothing
Set colAttach = Nothing
Set oAttach = Nothing
Set oApp = Nothing
End Sub
但是这给了我错误“编译错误:预期 =” 在行 oAttach.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F", "MyCid") 所以我尝试取出 , "MyCid") 并将电子邮件中的代码再次更改为 oEmail.HTMLBody = "<IMG alt='' hspace=0 src='cid:thumbs-up.jpg' align=baseline border=0>&nbsp;</BODY>",这样看起来像这样:
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")
oAttach.PropertyAccessor.SetProperty ("http://schemas.microsoft.com/mapi/proptag/0x3712001F")
oEmail.Close olSave
oEmail.To = "abc@abc123.com"
oEmail.HTMLBody = "<IMG alt='' hspace=0 src='cid:thumbs-up.jpg' align=baseline border=0> </BODY>"
oEmail.Send
Set oEmail = Nothing
Set colAttach = Nothing
Set oAttach = Nothing
Set oApp = Nothing
End Sub
但我现在收到错误Compile error: argument not optional,它指向oAttach.PropertyAccessor.SetProperty ("http://schemas.microsoft.com/mapi/proptag/0x3712001F") 行的.SetProperty 部分。
请注意,我使用的是 Windows 7、Microsoft Excel 2010 和 Microsoft Outlook 2010。
【问题讨论】:
-
我认为您看到的红色 X 是因为它找不到附加/嵌入的图像。你能检查一下,看看它在找什么吗?即,如果 HTML 试图加载它无权访问的内容,您将看到该框。
-
但是当我点击附件时,它会打开正确的图片
-
好的。所以你正确地附加了它。但是您没有正确嵌入它。正如我所说,检查红色 X。
-
schemas.microsoft.com/mapi/proptag/0x3712001F 没有指向任何东西。如果您点击链接,您会收到消息您要查找的资源已被删除、名称已更改或暂时不可用。
标签: html excel vba email outlook