在发送之前,如何删除电子邮件正文中的文本?

时间:2019-02-12 16:48:26

标签: outlook-vba

我们的公司会在任何来自外部来源的电子邮件中发出通知,警告我们在打开附件或单击链接时要谨慎行事。保证吗?是。烦人吗是。看起来有点不专业?也许。

我尝试了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 :(得分:1)

您永远不会使用存储在{% include 'partials/pagination.twig' with { pagination: posts.pagination({show_all: false, mid_size: 2, end_size: 1}) } %} 变量中的新值来重新设置Item.Body属性。另外请记住,由于要处理的是纯文本主体而不是strBody,因此将清除格式。