使用VBA从电子邮件中删除签名

时间:2015-07-31 11:42:52

标签: vba outlook

我目前正在使用vba为一个项目匿名化电子邮件。

目前收到电子邮件时,我创建了一条规则,将电子邮件移动到一个文件夹中,之后我使用getlast函数运行一个脚本,在该特定文件夹中,我显示新收到的电子邮件并复制其中的内容。发送电子邮件,然后将其粘贴到新电子邮件中并发送到特定的电子邮件地址。这有效地删除了电子邮件的识别功能。

Rubik's Cube的最终动作是找到电子邮件签名并替换为空白,换句话说,删除签名。我会有电子邮件签名来做这件事,但如果有人可以帮忙解决这个问题会很棒......

2 个答案:

答案 0 :(得分:3)

我找到了这个解决方案。

'I also had to add Word in tools/references of VBA and then Call DeleteSig(msg) after displaying the item.
'http://www.access-programmers.co.uk/forums/showthread.php?t=259417

Sub DeleteSig(msg As Outlook.MailItem)
    Dim objDoc As Word.Document
    Dim objBkm As Word.Bookmark
    On Error Resume Next
    Set objDoc = msg.GetInspector.WordEditor
    Set objBkm = objDoc.Bookmarks("_MailAutoSig")
    If Not objBkm Is Nothing Then
        objBkm.Select
        objDoc.Windows(1).Selection.Delete
    End If
    Set objDoc = Nothing
    Set objBkm = Nothing
End Sub

答案 1 :(得分:2)

这不是很难,但取决于邮件的某些属性:

  • 邮件是纯文本吗?或者html
  • 如果是HTML,你有html格式的签名吗? (带标签)

我认为您使用Outlook.MailItem

类型的变量阅读邮件
' Definition of your mail
Dim OutMail As Outlook.MailItem
dim signature as string
...
with OutMail
    .HTMLBody = Replace(.HTMLBody, signature, "")
End with

如果您拥有的签名不是完全匹配,那么它会有点棘手。 我建议创建一个检测签名并在没有它的情况下返回HTMLBody的函数