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

Access中用VBA创建带正文与Outlook签名的邮件问题

解决Access VBA发送Outlook邮件时签名不显示的问题

直接赋值.Body会完全覆盖Outlook自动生成的邮件内容(包括默认签名),这就是设置正文后签名消失的原因。以下是两种实用解决方案:

方法一:利用HTMLBody拼接正文与签名(推荐)

Outlook签名通常为HTML格式,先让Outlook自动加载签名,再将自定义正文拼到签名前:

With objOutlookMsg
    Set objOutlookRecip = .Recipients.Add("test@web.de")
    objOutlookRecip.Type = olTo

    .Subject = "Verwaltungsgebühr "
    ' 触发Outlook加载签名,必须先执行Display
    .Display
    .WindowState = olMinimized ' 可选:最小化邮件窗口,避免弹窗干扰
    
    ' 将纯文本正文转为HTML格式
    Dim customHtml As String
    customHtml = "<p>" & Replace(Anredeemail, vbCrLf, "<br>") & "</p>" & _
                 "<p>anbei erhalten Sie unsere Verwaltungskostenrechnung.</p>" & _
                 "<p>Mit freundlichen Grüßen</p>"
    
    ' 把自定义正文加到签名HTML的前面
    .HTMLBody = customHtml & .HTMLBody
    
    .Importance = olImportanceNormal
    .Attachments.Add strDatei
    .Send
End With

方法二:读取本地签名文件拼接纯文本正文

如果签名是纯文本格式,可直接读取本地签名文件内容拼到正文末尾:

' 读取本地签名文件内容
Dim signatureText As String
Dim signaturePath As String
signaturePath = Environ("APPDATA") & "\Microsoft\Signatures\"
' 替换为你的实际签名文件名(可在上述路径中查看)
Open signaturePath & "Standard.txt" For Input As #1
signatureText = Input$(LOF(1), 1)
Close #1

With objOutlookMsg
    Set objOutlookRecip = .Recipients.Add("test@web.de")
    objOutlookRecip.Type = olTo

    .Subject = "Verwaltungsgebühr "
    ' 拼接自定义正文与签名
    .Body = Anredeemail & vbCrLf & vbCrLf & _
            "anbei erhalten Sie unsere Verwaltungskostenrechnung." & vbCrLf & vbCrLf & _
            "Mit freundlichen Grüßen" & vbCrLf & vbCrLf & _
            signatureText
    
    .Importance = olImportanceNormal
    .Attachments.Add strDatei
    .Send
End With

注意事项

  • 确保Outlook已设置默认签名,否则.Display也无法加载签名
  • 方法一适配带格式的签名,方法二仅适用于纯文本签名

内容的提问来源于stack exchange,提问作者user3464366

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:52:46