【问题标题】:Why doesn't my image embed in an HTML email?为什么我的图片没有嵌入 HTML 电子邮件?
【发布时间】: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>&nbsp;</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>&nbsp;</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 = "&lt;IMG alt='' hspace=0 src='cid:thumbs-up.jpg' align=baseline border=0&gt;&amp;nbsp;&lt;/BODY&gt;",这样看起来像这样:

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>&nbsp;</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


【解决方案1】:

好的,谷歌搜索错误消息“编译错误:预期=”后,更改行:

oAttach.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F", "MyCid")

收件人:

Call oAttach.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F", "MyCid")

工作。

我是从http://answers.microsoft.com/en-us/office/forum/office_2010-access/vba-compile-error-expect-in-sub-call/a47c752f-3034-41a6-a77c-b3ddaa34b24c?auth=1发现的

感谢您的所有 cmets 和回答。

【讨论】:

    【解决方案2】:

    VBA 在调用 sub 时不喜欢括号 - 尝试摆脱 (): oAttach.PropertyAccessor.SetProperty "http://schemas.microsoft.com/mapi/proptag/0x3712001F", "MyCid"

    【讨论】:

      猜你喜欢
      • 2015-12-19
      • 2015-11-13
      • 2012-07-29
      • 2011-12-07
      • 2021-09-13
      • 2013-05-04
      • 2020-11-05
      • 2016-11-06
      • 1970-01-01
      相关资源
      最近更新 更多