【发布时间】:2017-07-10 07:29:21
【问题描述】:
我正在尝试组合一个群发电子邮件宏,该宏将遍历一个表格,提取电子邮件和收件人姓名。出于品牌推广的目的,我想发送带有签名的每封电子邮件。
我正在尝试使用 MailItem 对象,但我一直遇到 2 个问题:
.display 创建一个新的 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
【问题讨论】:
-
试试
.body = strMessage & vbCrLf & .body -
如果您的 Outlook 有多个签名文件可供选择,请创建 Word App,使用
oWordApp.EmailOptions.EmailSignature.NewMessageSignature = <SignatureFilename>更改签名和/或恢复原始签名。在 Outlook 应用程序发送之前执行此操作将使用 html 签名,该签名可以在表格等中包含图像和内容。 -
@TimWilliams 不走运。我尝试隔离 .body ,它也产生了应用程序定义或对象定义的错误。
标签: string vba email ms-access outlook