【问题标题】:Prevent Outlook Adding unwanted Signatures repeatedly in VBA防止 Outlook 在 VBA 中重复添加不需要的签名
【发布时间】:2016-10-24 14:39:56
【问题描述】:

我想阻止 Outlook 将签名附加到任何新打开的 Outlook MailItem。使用 Outlook.CreateItemFromTemplate(TemplateName) 时,默认签名会自动附加到新的 MailItem。当使用附加到 Outlook 客户端的多个帐户时,签名通常是不需要的,或者只是错误的。更糟糕的是,许多 Outlook 方法会附加不需要的签名的更多重复副本。有可能附上一大堆。

打开模板时,附加的签名是保存模板名称时处于活动状态的帐户的默认值。它不是当前活动帐户的默认值。一个想法是暂时关闭相关帐户的签名并直接添加所需的签名,因为这将是解决问题的一个相当简单的方法。 有没有办法关闭特定帐户的签名?我找不到。

默认帐户的签名可以通过设置关闭 appWd.EmailOptions.EmailSignature.NewMessageSignature = vbNullString 也可以稍后恢复,但这无济于事。一种可能的解决方法是通过编程方式更改默认帐户,关闭默认帐户的签名,打开所需的 TemplateName,然后将所有内容恢复到原始状态。但是,它不起作用,因为:

  • a) 我找不到以编程方式切换默认帐户的方法。这似乎只能通过单击用户界面来实现。
  • b) 无论如何,它不会有任何区别,因为 尽管进行了更改,但仍会使用保存了 TemplateName 的帐户。

这个要求的基础是我需要使用 VBA 合并 Outlook 中现有 MailItems 的部分。目标是将多个项目的部分合并到一个新的 MailItem 中,以便转发到邮件列表。使用MailItem.GetInspector.WordEditor 有效地合并所有工作,我已经解决了与附件和嵌入图片相关的问题,但多个签名,相比之下,这似乎是一件简单的事情,却导致了一个问题。有没有办法关闭它们?在 WordEditor 或 HTML 中删除它们将非常困难,因为签名具有任意结构。

【问题讨论】:

  • 您是否尝试使用 SendUsingAccount 切换您要发送的帐户?我可能是错的,但签名不是根据您发送的帐户生成的吗?
  • 我试过了。它不起作用,至少在连接了 POP3 和 Exchange 帐户的系统上不起作用。

标签: vba email ms-word outlook


【解决方案1】:

不是最优雅的解决方案,但这样的解决方案应该可行。

基本上,在显示之前存储电子邮件的 HTML,然后在显示后进行比较,如果不同则更新 HTML。

Public Sub OutlookTest()
    Dim Outlook             As Object
    Dim MyTemplateItem      As Object
    Dim OriginalBody        As String

    Set Outlook = CreateObject("Outlook.application")
    Set MyTemplateItem = Outlook.CreateItemFromTemplate("C:\SomePath\Example.oft")

    OriginalBody = MyTemplateItem.HTMLBody
    MyTemplateItem.Display

    If MyTemplateItem.HTMLBody <> OriginalBody Then MyTemplateItem.HTMLBody = OriginalBody
End Sub

【讨论】:

  • 好主意。正如您所说,不是很优雅,在 CPU 上可能相当昂贵,并且需要 HTMLbody(作为文本)和 .oft 在持续时间内保存,但我认为它会起作用。到目前为止,我在测试期间的解决方法是在发送之前简单地从正文中查找并删除“通常的嫌疑人”签名。你的方法会比那做得更好。谢谢。在尝试之前我会稍等片刻,希望有人知道如何从源头上解决问题而不是绕过它。
  • 我和你在一起,是的,我看了看,也找不到太多。也许戳 Dmitry Streblechenko,Dmitry 知道很多关于:Outlook :)
  • 谢谢。我会努力引起他的注意。嗨,Dimitry streblechenko。在我的帖子中,Ryan Wildry 建议您注意这个问题。它的核心是:“是否可以在 VBA 代码中关闭任意 Outlook 帐户的默认签名?”
  • 我现在使用Ryan Wildry's 解决方案作为唯一有效的解决方案。实施起来相当复杂。在对使用 Set Doc = MailItem,.GetInspector.WordEditor 创建的文档进行任何编辑后,使用 MailItem.Display 似乎很重要。我主动不想看到它显示,但没有.Display 原始模板中的签名会自动更改为会话默认值。可悲的是,Dimitry streblechenko 没有注意到这一点!
猜你喜欢
  • 2021-03-23
  • 2017-04-25
  • 1970-01-01
  • 1970-01-01
  • 2013-10-06
  • 2021-09-23
  • 2017-11-26
  • 2018-03-25
  • 1970-01-01
相关资源
最近更新 更多