这个帖子讨论了使用 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