You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过VBA将HTML文件以文本形式插入Outlook邮件?

解决方案

要实现用VBA将HTML文件以纯文本形式插入Outlook邮件,核心是先读取HTML文件的原始源代码,再将其作为普通文本插入邮件正文,而非渲染HTML内容。以下是具体实现步骤和代码示例:

步骤说明

  1. 读取HTML文件的纯文本内容:通过文件系统对象读取HTML文件,完整保留所有标签、换行和原始字符。
  2. 插入文本到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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 22:42:54