Как мне удалить текст в теле письма перед отправкой? - PullRequest
0 голосов
/ 12 февраля 2019

Наша компания помещает уведомление на любое входящее электронное письмо из внешнего источника, чтобы предупредить нас об осторожности при открытии вложений или переходе по ссылкам.Гарантированный?Да.Раздражает?Да.Выглядит несколько непрофессионально?Возможно.

Я пробовал несколько разных итераций VBA, чтобы спросить, хочу ли я удалить сообщение при отправке.Мой текущий код приведен ниже, и он выведет окно сообщения, поэтому я знаю, что мое форматирование правильное, и он находит текст, но фактически не удаляет его.

Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim strBody As String

If InStr(Item.Body, "NOTICE: This email is from an external sender. Please exercise caution when opening attachments or clicking links.") > 0 Then
   If MsgBox("Do you want to remove the Notice?", vbYesNo) = vbYes Then
     strBody = Replace(Item.Body, "NOTICE: This email is from an external sender. Please exercise caution when opening attachments or clicking links.", "", vbTextCompare)

   Else
      strBody = Item.Body
   End If
End If

Item.Save
End Sub

Я хотел бы дляпоявится окно сообщения и спросит, нужно ли удалить уведомление, а затем удалите его, если я нажму «да», но оставлю все остальное в письме.Одно предостережение в том, что это уведомление может быть несколько раз, если это длинная цепочка с несколькими ответами.Если я единственный в цепочке, то мой макрос будет удалять любые из предыдущих ответов, но если другие находятся в цепочке и не удаляют свои, то я бы хотел, чтобы мой макрос сделал это, если я отвечу (я понимаю,Я ничего не могу поделать с другими).

Должен ли код быть другим, если это электронное письмо в формате HTML, а не простой текст?

РЕДАКТИРОВАТЬ: Вот мой текущий код.Я получил его, чтобы удалить уведомление, и теперь он не будет удалять новое письмо, но отправка ответа очень медленная.

Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

Dim strBody As String

If InStr(Item.HTMLBody, "LHMSE NOTICE: This email is from an external sender. Please exercise caution when opening attachments or clicking links.") > 0 Then
   If MsgBox("Do you want to remove the LHMSE Notice?", vbYesNo) = vbYes Then
     strBody = Replace(Item.HTMLBody, "LHMSE NOTICE: This email is from an external sender. Please exercise caution when opening attachments or clicking links.", "", vbTextCompare)
     Item.HTMLBody = strBody

   Else
      strBody = Item.HTMLBody
   End If
End If

Item.Save
End Sub

1 Ответ

0 голосов
/ 12 февраля 2019

Вы никогда не устанавливаете обратно свойство Item.Body с новым значением, сохраненным в переменной strBody.Также имейте в виду, что вы уничтожите форматирование, поскольку вы имеете дело с текстовым телом, а не с MailItem.HTMLBody.

...