如何通过VBA将HTML文件以文本形式插入Outlook邮件?
解决方案
要实现用VBA将HTML文件以纯文本形式插入Outlook邮件,核心是先读取HTML文件的原始源代码,再将其作为普通文本插入邮件正文,而非渲染HTML内容。以下是具体实现步骤和代码示例:
步骤说明
- 读取HTML文件的纯文本内容:通过文件系统对象读取HTML文件,完整保留所有标签、换行和原始字符。
- 插入文本到Outlook邮件:可以直接覆盖邮件正文,或插入到已有邮件的光标位置(需先显示邮件)。
VBA代码示例
Sub InsertHTMLAsPlainText() Dim outlookApp As Object Dim mailItem As Object Dim fileSysObj As Object Dim textStream As Object Dim htmlSource As String Dim targetPath As String ' 替换为你的HTML文件实际路径 targetPath = "C:\Files\your-file.html" ' 读取HTML文件内容 Set fileSysObj = CreateObject("Scripting.FileSystemObject") If Not fileSysObj.FileExists(targetPath) Then MsgBox "文件不存在,请检查路径!", vbExclamation Exit Sub End If Set textStream = fileSysObj.OpenTextFile(targetPath, 1, False, -2) htmlSource = textStream.ReadAll textStream.Close ' 创建新邮件并插入文本 Set outlookApp = CreateObject("Outlook.Application") Set mailItem = outlookApp.CreateItem(0) ' 方式1:直接设置邮件正文为HTML源代码文本 mailItem.Body = htmlSource ' 方式2:插入到现有邮件的光标位置(需先显示邮件) ' mailItem.Display ' mailItem.GetInspector.WordEditor.Selection.TypeText htmlSource ' 显示邮件 mailItem.Display ' 释放对象 Set textStream = Nothing Set fileSysObj = Nothing Set mailItem = Nothing Set outlookApp = Nothing End Sub
关键细节
- 使用
Scripting.FileSystemObject读取文件时,参数-2指定使用系统默认编码,避免因编码问题导致HTML内容乱码。 - 不要使用
mailItem.HTMLBody属性,该属性会将内容作为HTML渲染,而非插入纯文本源代码。 - 若需要插入到已有邮件的指定位置,必须先调用
mailItem.Display显示邮件,才能获取WordEditor对象进行光标定位插入。
内容的提问来源于stack exchange,提问作者EddieL
相关产品推荐
相关产品推荐

