我制作了以下程序,该程序从MS Access中的表格中获取电子邮件地址列表,并发送每封测试电子邮件。这是代码:
'Get data back from field birth date
Set fld = rcdSet.Fields("Email Address")
'Subject
olMailItem.Subject = "Mailing List Test"
'Loop through the records
For i = 0 To intNumRecords
'Recipient/s
olMailItem.To = fld.Value
'Body of email
olMailItem.Body = strBodyText
'Automatically send the email
olMailItem.Send
'Reset email item otherwise it won't work
Set olMailItem = olFolder.Items.Add("IPM.Note")
'Move to the next record
rcdSet.MoveNext
Next
是的,我打开了一个记录集,但没有在上面包含该代码。所以这是我的问题:
我的方法正确吗?我必须olMailItem
在循环中重置,否则它将返回Type Error
。有发送多个电子邮件的更好方法吗?
我输入了无效的电子邮件以查看发生了什么,它又导致了另一起电子邮件Type Error
。无论如何,有没有检测到反弹(电子邮件Outlook向您发送通知,通知您这是一个错误的地址)电子邮件并将消息发送到Immediate Window
(此时出于开发目的)
谢谢
注意-添加了邮件项目的声明
'Create Outlook object
Dim olApp As Outlook.Application
'Namespace
Dim olNS As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
'Create a reference to the email item you will use to send the email
Dim olMailItem As Outlook.MailItem
Set olApp = CreateObject("Outlook.Application")
Set olNS = olApp.GetNamespace("MAPI")
Set olFolder = olNS.GetDefaultFolder(olFolderInbox)
Set olMailItem = olFolder.Items.Add("IPM.Note")
如果我没有在for循环中重新设置olMailItem .To
,则程序部分会发生错误-前面提到的Type Error
我不知道您声明了IPM类型的对象。注意并尝试发送它,而是声明一个mailitem。
这应该工作
'Loop through the records
For i = 0 To intNumRecords
Set olMailItem = olFolder.Items.Add
'Subject
olMailItem.Subject = "Mailing List Test"
'Recipient/s
olMailItem.To = fld.Value
'Body of email
olMailItem.Body = strBodyText
'Automatically send the email
olMailItem.Send
'Release new mailitem
Set olMailItem = Nothing
'Move to the next record
rcdSet.MoveNext
Next
请访问http://msdn.microsoft.com/zh-cn/library/office/bb220348(v=office.12).aspx,以获取有关add方法的更多信息。
编辑:看到完整循环
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句