如何使用 VBA 替换 Outlook 2013 中传入邮件正文中的文本而不丢失格式

如何使用 VBA 替换 Outlook 2013 中传入邮件正文中的文本而不丢失格式

这个帖子讨论了使用 Outlook 规则替换传入电子邮件中的文本的 VBA 解决方案。

我使用相同的方法从收到的电子邮件顶部删除了“外部消息”文本(它实际上是雇主插入的两行文本,真的很烦人)。但是,当 VBA 进行替换时,生成的电子邮件也会更改电子邮件的格式。文本按预期替换(很棒!),但电子邮件中的所有超链接都被展开,并且所有其他 html 格式都丢失了(不好)。看起来它已被转换为纯文本。有没有办法在 Outlook 中替换传入消息的文本而不丢失 HTML 格式?

这是我正在运行的代码:

Sub RemoveExternalText(MyMail As MailItem)
   Dim body As String, re As Object, match As Variant

   body = MyMail.body
   Set re = CreateObject("vbscript.regexp")
   re.Pattern = "External Message"

   For Each match In re.Execute(body)
       body = Replace(body, match.Value, "")
   Next

   MyMail.body = body
   MyMail.Save

End Sub

答案1

在阅读有关使用 VBA 创建 HTML 电子邮件时,我发现他们没有使用“MyMail.body”,而是使用“MyMail.HTMLbody”。

使用该语法更改代码即可解决问题!

Sub RemoveExternalText(MyMail As MailItem)
  Dim body As String, re As Object, match As Variant

  body = MyMail.HTMLBody
  Set re = CreateObject("vbscript.regexp")
  re.Pattern = "External Message"

  For Each match In re.Execute(body)
      body = Replace(body, match.Value, "")
  Next

  MyMail.HTMLBody = body
  MyMail.Save

End Sub

相关内容