如何使用 VBA 取代 Outlook 2013 中傳入郵件正文中的文字而不遺失格式

如何使用 VBA 取代 Outlook 2013 中傳入郵件正文中的文字而不遺失格式

這個帖子討論使用 Outlook 規則取代傳入電子郵件中的文字的 VBA 解決方案。

我使用相同的方法從我收到的電子郵件頂部刪除“外部訊息”文本(實際上是雇主插入的兩行文本,真的很煩人)。但是,當 VBA 進行替換時,產生的電子郵件也會變更電子郵件的格式。文字按預期被替換(太棒了!),但電子郵件中的所有超連結都被展開,並且所有其他 html 格式都丟失了(不好)。看起來它已經被轉換為純文字了。有沒有辦法在不遺失 HTML 格式的情況下替換 Outlook 中傳入郵件的文字?

這是我正在運行的程式碼:

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

相關內容