【发布时间】:2013-08-23 10:05:38
【问题描述】:
我制作了以下程序,该程序从 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
【问题讨论】:
-
您的第一个问题可能会在code review 得到答案。第二个问题的答案here
-
这里有一些奇怪的东西,首先你如何声明那个mailitem?为什么将您的 mailItem 对象设置为新便笺?如果你不这样做会发生什么
-
@Machinegon 已添加到我的问题中
-
@mehow 已发帖对整个代码进行代码审查
标签: ms-access outlook vba ms-access-2003