带有Access-Outlook宏的电子邮件中的自动签名
我正在尝试放置一个大容量电子邮件宏,它将遍历表,拉取电子邮件和收件人姓名。为了品牌的目的,我想发送每个电子邮件签名。带有Access-Outlook宏的电子邮件中的自动签名
我试图使用的MailItem对象,但我一直运行到2个问题:
。显示创建一个新的Outlook电子邮件和默认的签名进行填充。但是,.body将用strMessage中的文本字符串擦除签名。我在猜测它是因为我无法在同一个电子邮件对象中同时使用表格(包括图片等)和字符串?
-
我试过Microsoft Outlook 15和16对象库中的.send和.body方法。虽然两者都工作在16位,但似乎都不存在于15位。我总是给出“应用程序定义或对象定义的错误”。我找不到任何有关Outlook 15库的文档,有谁知道15和.send和.body有什么相同的方法?
Dim OApp As Object, OMail As Object, signature As String Set OApp = CreateObject("Outlook.Application") Set OMail = OApp.CreateItem(0) Dim rs As DAO.Recordset Dim db As Database Dim strSQL As String, strFirstName As String, strLastName As String, strFullName As String, strSubject As String, strMessage As String Set db = CurrentDb strSQL = "SELECT Email, FirstName, LastName FROM PersonsT WHERE [PersonsT]![Attended]=True" Set rs = db.OpenRecordset(strSQL) Do While Not rs.EOF strFirstName = rs.Fields("FirstName") strLastName = rs.Fields("LastName") strFullName = rs.Fields("FirstName") & " " & rs.Fields("LastName") strSubject = "Greetings" strMessage = "Hello " & strFullName & vbNewLine & vbCrLf & " Let me be the first to congratulate you on registering in this program" With OMail .Display End With With OMail .to = rs![Email] .Subject = strSubject .body = strMessage .send End With rs.MoveNext Loop Set OMail = Nothing Set OApp = Nothing rs.Close Set rs = Nothing
考虑使用的MailItem的GetInspector()财产事先检索签名文本,然后串联到邮件正文。渲染可能不同,所以尝试.HTMLBody
超过.Body
在两条线:
...
Dim signature As String
oMail.GetInspector
signature = oMail.Body
With OMail
.Recipients.Add rs![Email]
.Subject = strSubject
.Body = strMessage & signature
.Display
End With
这适用于各种前景的口味,而使用后期绑定,以便版本/引用不应该是一个问题。
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 ' This creates a blank email and captures the users default signature.
.BodyFormat = 2 'olFormatHTML
.Display
End With
signature = OutMail.HTMLBody
对不起,迟到的回复,我完全错过了这个回应。我在这个宏的早期版本中使用了Outlook应用程序,但发现设置任何类型的.body(我相信这会以纯文本输入)会擦除签名。我认为这是因为签名中有表格。 – enmasse
尝试'。体= strMessage&vbCrLf&.body' –
如果您的Outlook有多个签名文件可以选择,创建的Word应用程序,使用'oWordApp.EmailOptions.EmailSignature.NewMessageSignature ='改变签名和/或恢复原始签名。在Outlook应用程序发送之前执行此操作将使用可以在表格中显示图像和内容的html签名。 –
PatricK
@TimWilliams没有运气。我试着隔离.body,它也产生了一个应用程序定义或对象定义的错误。 – enmasse