如何在Outlook VBA生成的邮件中添加HTMLBody格式签名
问题根因
Outlook返回的.HTMLBody是完整的HTML文档,包含<html>、<head>、<body>等根标签,直接把自定义内容拼接在整个HTML字符串最前面,会导致自定义内容处于<html>标签外,Outlook渲染邮件时会自动忽略这部分无效内容,因此你的正文消失,但签名可以正常显示。
解决方法
把自定义正文插入到原有HTML的<body>标签内部,保留原有HTML结构和签名内容,修改后的代码如下:
Sub Email() Dim OutApp As Object Dim OutMail As Object Dim Path As String Dim msg As String Dim originalHtml As String Dim bodyStart As Long, bodyEnd As Long Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(0) msg = "<p>Hello World,</p><br>" On Error Resume Next With OutMail ' 必须先调用Display触发Outlook加载默认签名 .Display .To = "" .CC = "" .BCC = "" .Subject = "Fruits Stock " & Path ' 处理HTML结构,把自定义内容插入到body节点内 originalHtml = .HTMLBody bodyStart = InStr(1, originalHtml, "<body", vbTextCompare) bodyEnd = InStr(bodyStart, originalHtml, ">", vbTextCompare) .HTMLBody = Left(originalHtml, bodyEnd) & msg & Mid(originalHtml, bodyEnd + 1) End With On Error GoTo 0 Set OutMail = Nothing Set OutApp = Nothing End Sub
注意事项
.Display必须放在修改.HTMLBody之前执行,否则Outlook不会自动加载签名- 该方法兼容带样式属性的
<body>标签,不会破坏原有HTML格式和签名的样式
内容的提问来源于stack exchange,提问作者user17420363
相关产品推荐
相关产品推荐

