Vba 自动图像的替代方案+;电子邮件中带有正文文本的HTML签名

Vba 自动图像的替代方案+;电子邮件中带有正文文本的HTML签名,vba,ms-access,outlook,Vba,Ms Access,Outlook,我在这个问题上做了很多研究,我得出结论,我想做的是根本不可能的。无论使用Outlook对象库中的任何方法;当.body、.HTMLBody或.RTFBody之后也被调用时,任何由.display和.getInspector等函数自动填充的签名似乎都将被删除。我得到了很多很好的建议,比如下面的建议,但它似乎是。body的任何变体都会擦除签名,无论签名是如何填充的 Dim OutApp As Object Dim OutMail As Object

我在这个问题上做了很多研究,我得出结论,我想做的是根本不可能的。无论使用Outlook对象库中的任何方法;当.body、.HTMLBody或.RTFBody之后也被调用时,任何由.display和.getInspector等函数自动填充的签名似乎都将被删除。我得到了很多很好的建议,比如下面的建议,但它似乎是。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

主体被清除,因为代码显式地将其清除。或者,在您的特定情况下,Outlook从不应用签名,因为它看到HTML正文是以前设置的


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

我不确定读取然后合并HTMLBody是什么意思。请看我的编辑上面。通过阅读,您的意思是将HTML签名存储在一个变量中,然后将HTMLBody属性设置为与电子邮件内容和签名变量相等吗?不,阅读HTMLBody属性的值(它现在将包含签名),找到“
”的位置(这样您就可以处理“body”了带有属性的标记)。然后在“
”子字符串之后插入HTML正文。现在将组合字符串设置为
HTMLBody
属性。