我正在尝试通过使用Outlook oft模板分发电子邮件。在特定位置的模板上,我想附加从excel范围创建的jpg文件。
Dim OutApp As Object
Dim OutMail As Object
Dim str_jpeg_file as String
str_jpeg_file = "B:\temp\test.jpg"
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItemFromTemplate(ThisWorkbook.Path & "\Test.oft")
With OutMail
.To = "test@abcd.com"
.CC = ""
.BCC = ""
.Subject = "Test mail"
.SentOnBehalfOfName = "zyz@abcd"
.Attachments.Add str_jpeg_file, 1, 0
.HTMLBody = Replace(.HTMLBody, "##IMAGE_PLACEHOLDER##", "<img src=""cid:test.jpg""height=520 width=750>")
'.Send
.display
End With
编辑:
jpg文件路径已更新,即 str_jpeg_file
给您一个完整的工作示例:
Option Explicit
Sub test()
Dim OutApp As Object
Dim OutMail As Object
Dim str_jpeg_file As String
str_jpeg_file = "C:\Temp\test.png"
Set OutApp = CreateObject("Outlook.Application")
'Set OutMail = OutApp.CreateItemFromTemplate(ThisWorkbook.Path & "\Test.oft")
'instead of a template I create a new mail
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "test@abcd.com"
.CC = ""
.BCC = ""
.Subject = "Test mail"
.SentOnBehalfOfName = "zyz@abcd"
.Attachments.Add str_jpeg_file, 1, 0
'first we write some placeholder text so we can replace it
.HTMLBody = "lalala ##IMAGE_PLACEHOLDER## lala"
'replace
.HTMLBody = Replace(.HTMLBody, "##IMAGE_PLACEHOLDER##", "<img src=""cid:test.png""height=256 width=256>")
'.Send
.display
End With
End Sub
请注意,我使用了一封新电子邮件(无模板),因为它在此处更容易显示。
它完美地工作:
因此,如果它对您不起作用,则您的图像文件不是有效的图像,或者您做了其他错误的操作,例如错别字等,或者您的模板在某种程度上是问题所在。使用上面的代码再次检查。
str_jpeg_file = "C:\Temp\test.png"
,请您尝试jpg文件谢谢@Peh。它适用于
.png
文件格式。经过测试的模板和新邮件@ 1S1a4m9好,它必须工作
.jpg
完全相同,没有区别。我敢打赌,这里可能是拼写错误或jpeg损坏。好我会检查。