Как заменить текст в теле входящего сообщения в Outlook 2013 с помощью VBA без потери форматирования

Как заменить текст в теле входящего сообщения в Outlook 2013 с помощью VBA без потери форматирования

Эта почтаобсуждается решение VBA для замены текста во входящем письме с помощью правил Outlook.

Я использовал тот же подход, чтобы удалить текст «Внешнее сообщение» из верхней части получаемых мной писем (на самом деле это 2 строки текста, которые вставляет работодатель, очень раздражает). Однако, когда 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

Читая о создании HTML-электронной почты с помощью VBA, я увидел, что они не используют «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

Связанный контент