我在 Excel 中运行了以下 VBA 代码片段,它向我们的客户发送电子邮件。我正在尝试将图片插入电子邮件正文。下面的代码在发送到我的内部 Outlook 电子邮件时工作正常,但在发送到我的个人 Gmail 帐户时不起作用,这意味着图像不显示。也许是因为 LetterHead 文件路径在我们的网络中?帮助将不胜感激!
Dim MItem As Outlook.MailItem
Dim LetterHead As String
LetterHead = "file path to .png file located in company network drive"
For x = 1 To xlList.DataBodyRange.Rows.Count
Set MItem = OutlookApp.CreateItem(olMailItem)
PolNum = xlList.DataBodyRange.Cells(x, 7).Value
PolSubj = Subj & PolNum
With MItem
.To = EmailAddr
.Subject = PolSubj
.HTMLBody = "<center><img src=" & Chr(34) & LetterHead & Chr(34) & "></center>" & StrBody & .HTMLBody
.Send
End With
可能是因为 LetterHead 文件路径在我们的网络中?
是的,你走对了路。您需要将图像上传到任何网络服务器以供其他人使用。请注意,电子邮件客户端应用程序可能会自动阻止互联网图像。
如果您需要确保图像显示给用户,您需要将图像附加到邮件项目(参见 Attachments.Add),然后设置
PR_ATTACH_CONTENT_ID
MAPI 属性(DASL 名称为“http:/ /schemas.microsoft.com/mapi/proptag/0x3712001F") 使用 PropertyAccessor.SetProperty 并使用与在附件对象上设置的 src
属性值匹配的 PR_ATTACH_CONTENT_ID
属性引用附件。例如:
attachment = MailItem.Attachments.Add("c:\temp\MyPicture.jpg")
attachment.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F", "YourPictureId")
MailItem.HTMLBody = "<html><body>This is an embedded image <img src=""cid:YourPictureId""></body></html>"
PR_ATTACH_CONTENT_ID
属性对应消息发送时的Content-ID
MIME头
试试
Option Explicit
Sub InsertImageInEmailBody()
Dim ImageFilePath As String, xMailBody As String
' Set the image file path
ImageFilePath = "C:\path\to\file\picture.png"
xMailBody = "<BODY>Hi,<br> <br>This is the pic<br><br>" & _
"<img src='" & ImageFilePath & "'><br><br>" & _
"Thank you.</BODY>"
With CreateObject("outlook.application").CreateItem(0)
.To = "[email protected]"
.Subject = "Here it is"
.HTMLBody = xMailBody & .HTMLBody
'.Attachments.Add
.Display
'.send
End With
End Sub