Excel 如何将JPG文件添加到电子邮件正文中特定位置的oft模板中

Excel 如何将JPG文件添加到电子邮件正文中特定位置的oft模板中,excel,vba,outlook,Excel,Vba,Outlook,我正在尝试使用outlook oft模板分发电子邮件。 在特定位置的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.CreateItem

我正在尝试使用outlook oft模板分发电子邮件。 在特定位置的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
Dim OutApp作为对象
将邮件变暗为对象
Dim str_jpeg_文件作为字符串
str\u jpeg\u file=“B:\temp\test.jpg”
Set-OutApp=CreateObject(“Outlook.Application”)
设置OutMail=OutApp.CreateItemFromTemplate(ThisWorkbook.Path&“\Test.oft”)
发邮件
.To=”test@abcd.com"
.CC=“”
.BCC=“”
.Subject=“测试邮件”
.SentonBehalfName=”zyz@abcd"
.Attachments.Add str_jpeg_文件,1,0
.HTMLBody=Replace(.HTMLBody,###图像###,,“”)
’发送
.展示
以
编辑:


jpg文件路径已更新,即
str\u jpeg\u文件

,为您提供完整的工作示例:

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
选项显式
子测试()
Dim OutApp作为对象
将邮件变暗为对象
Dim str_jpeg_文件作为字符串
str\u jpeg\u file=“C:\Temp\test.png”
Set-OutApp=CreateObject(“Outlook.Application”)
'Set-OutMail=OutApp.CreateItemFromTemplate(ThisWorkbook.Path&“\Test.oft”)
'我创建了一个新邮件,而不是一个模板
Set-OutMail=OutApp.CreateItem(0)
发邮件
.To=”test@abcd.com"
.CC=“”
.BCC=“”
.Subject=“测试邮件”
.SentonBehalfName=”zyz@abcd"
.Attachments.Add str_jpeg_文件,1,0
'首先,我们编写一些占位符文本,以便替换它
.HTMLBody=“拉拉##图像#U占位符##拉拉”
"替换",
.HTMLBody=Replace(.HTMLBody,###图像###,,“”)
’发送
.展示
以
端接头
注意,我使用了一个新的电子邮件(没有模板),因为它更容易在这里显示

它工作得非常完美:


因此,如果它不适合你,或者你的图像文件是无效的图像,或者你做了一些其他错误,如打字错误等,或者你的模板是某种程度上的问题。请使用上面的代码再次检查。

您的密码是什么?如果您执行此操作,

jpg_文件路径将指向您的本地计算机,而接收邮件的人无法访问该计算机,因为他的计算机上不存在该文件。Attachments.Add方法将文件附加到电子邮件,但此处的要求是将jpg文件添加到电子邮件正文的特定位置。实际上,

这一行将图像添加到电子邮件正文顶部的电子邮件正文中,但由于我在第一条评论中提到的原因,您需要先附加文件,然后才能将其嵌入HTML正文中!您需要将图像与电子邮件一起发送,否则收件人将无法看到图像。当然,您需要在模板中设置一个占位符,您可以用
替换该占位符,该占位符必须看起来像
cid:
开始,只有文件名而不是链接中的完整路径。只需在模板中写入一个唯一的文本,然后可以替换:例如,在模板中写入
##IMAGE#u占位符#
,然后在VBA代码中用
替换该文件。
str u jpeg\u file=“C:\Temp\test.png”
,你能试试jpg文件吗?谢谢@Peh。它适用于
.png
文件格式。测试了oft模板和新的mail@1S1a4m9嗯,它必须适用于
.jpg
完全相同,没有区别。我打赌可能是输入错误或是jpeg格式有问题。好的,我会检查一下。