【问题标题】:Alternatives to automatically images + HTML signatures with body text in emails电子邮件中带有正文的自动图像 + HTML 签名的替代方案
【发布时间】:2017-02-27 00:13:30
【问题描述】:

我已经对这个主题进行了相当多的研究,我得出的结论是,我想做的事情根本不可能。无论使用 Outlook 对象库中的哪种方法;似乎任何由 .display 和 .getInspector 等函数自动填充的签名都会在之后调用 .body、.HTMLBody 或 .RTFBody 时被擦除。我得到了很多很好的建议,如下所示,但似乎 .body 的任何变体都会擦除签名,无论签名如何填充。

    Dim OutApp          As Object
    Dim OutMail         As Object
    Dim signature       As String

    Set OutApp = CreateObject("Outlook.Application")
    OutApp.Session.Logon
    Set OutMail = OutApp.CreateItem(0)
    On Error Resume Next
    With OutMail                               
        .BodyFormat = olFormatHTML                      
        .HTMLBody = "f"
        .Display
    End With

    signature = OutMail.HTMLBody

我最近一直在想,是否可以通过将位于 \AppData\Roaming\Microsoft\Signature 中的 .htm 签名文件包含在 .body 中来将其呈现到电子邮件本身中?有谁知道使用 .display 和 .getInspector 输入签名的任何替代方法?

编辑 2:

Dim OutApp          As Object
Dim OutMail         As Object
Dim signature       As String

Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
OutMail.Display
signature = OutMail.HTMLBody

With OutMail
    .HTMLBody = "fdA" & signature
    '.BodyFormat = olFormatHTML
End With

【问题讨论】:

    标签: vba ms-access outlook


    【解决方案1】:

    主体被清除是因为您的代码明确清除了它。或者,在您的特定情况下,Outlook 永远不会应用签名,因为它看到 HTML 正文之前已设置。

    当您调用DisplayGetInspector 时,Outlook 将添加签名。在您的情况下,首先调用Display(此时添加了签名),然后读取HTMLBody 属性(它现在将包含签名)。将它与您的 html 正文合并(注意,两个 HTML 字符串不能简单地连接,您必须将它们合并),然后将 HTMLBody 属性设置回来。

    【讨论】:

    • 我不确定您阅读然后合并 HTMLBody 是什么意思。请参阅我上面的编辑。通过阅读,您的意思是将 HTML 签名存储在一个变量中,然后将 HTMLBody 属性设置为等于电子邮件的内容和签名变量?
    • 不,读取 HTMLBody 属性的值(它现在将包含签名),找到“<body”子字符串的位置。找到下一个出现的“>”(这样您就可以处理带有属性的“body”标签)。然后在“>”子字符串之后插入您的 HTML 正文。现在将组合字符串设置为HTMLBody 属性。
    猜你喜欢
    • 2017-05-23
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多