Outlook VBA:如何从草稿文件夹发送电子邮件?
Outlook VBA: How to send emails from Drafts folder?
我在 Outlook 的草稿文件夹中有一百封邮件。我想把它们都发过去。
我在下面有一个代码,可以从草稿文件夹发送邮件,除了一封邮件(这是最后一封邮件)。程序读取的最后一封邮件收到一条错误消息:
"运行-时间错误'440':
数组索引越界。"
大家怎么看?非常感谢。
For i = 1 To myFolder.Items.Count
myFolder.Items(i).Send
Next
Items 集合的索引从 1 开始,不保证 Items 集合对象中的项目按任何特定顺序排列。
https://msdn.microsoft.com/en-us/library/office/ff863652.aspx
编辑:
另请参阅压缩 Outlook 数据文件:
https://support.office.com/en-nz/article/Reduce-the-size-of-Outlook-Data-Files-pst-and-ost-e4c6a4f1-d39c-47dc-a4fa-abe96dc8c7ef
如果您在使用递增计数器的循环中修改文件夹,您将 运行 遇到问题。
一个可能的解决方案是向后循环集合,即:
For i = myFolder.Items.Count To 1 Step -1
myFolder.Items(i).Send
Next
正如 SkyMaster 提到的,该数组是 1 索引的。
每发送一份草稿,文件夹中就会少一封邮件。下一封电子邮件上移成为集合中的第一封。所以当你循环时,你可以继续发送消息 folder.Items(1)
.
我已经为工作中的一些用户设置了此代码(他们有多个邮箱链接到他们的帐户):
Sub SendAllYourMailboxDrafts()
SendAllDrafts "your-mailbox-name"
End Sub
Sub SendAllDrafts(mailbox As String)
Dim folder As MAPIFolder
Dim msg As Outlook.MailItem
Dim count As Integer
Set folder = Outlook.GetNamespace("MAPI").Folders(mailbox)
Set folder = folder.Folders("Drafts")
If MsgBox("Are you sure you want to send the " & folder.Items.count & " items in your " & mailbox & " Drafts folder?", vbQuestion + vbYesNo) <> vbYes Then Exit Sub
count = 0
Do While folder.Items.count > 0
Set msg = folder.Items(1)
msg.Send
count = count + 1
Loop
MsgBox count & " message(s) sent", vbInformation + vbOKOnly
End Sub
我在 Outlook 的草稿文件夹中有一百封邮件。我想把它们都发过去。
我在下面有一个代码,可以从草稿文件夹发送邮件,除了一封邮件(这是最后一封邮件)。程序读取的最后一封邮件收到一条错误消息:
"运行-时间错误'440': 数组索引越界。"
大家怎么看?非常感谢。
For i = 1 To myFolder.Items.Count
myFolder.Items(i).Send
Next
Items 集合的索引从 1 开始,不保证 Items 集合对象中的项目按任何特定顺序排列。
https://msdn.microsoft.com/en-us/library/office/ff863652.aspx
编辑: 另请参阅压缩 Outlook 数据文件: https://support.office.com/en-nz/article/Reduce-the-size-of-Outlook-Data-Files-pst-and-ost-e4c6a4f1-d39c-47dc-a4fa-abe96dc8c7ef
如果您在使用递增计数器的循环中修改文件夹,您将 运行 遇到问题。
一个可能的解决方案是向后循环集合,即:
For i = myFolder.Items.Count To 1 Step -1
myFolder.Items(i).Send
Next
正如 SkyMaster 提到的,该数组是 1 索引的。
每发送一份草稿,文件夹中就会少一封邮件。下一封电子邮件上移成为集合中的第一封。所以当你循环时,你可以继续发送消息 folder.Items(1)
.
我已经为工作中的一些用户设置了此代码(他们有多个邮箱链接到他们的帐户):
Sub SendAllYourMailboxDrafts()
SendAllDrafts "your-mailbox-name"
End Sub
Sub SendAllDrafts(mailbox As String)
Dim folder As MAPIFolder
Dim msg As Outlook.MailItem
Dim count As Integer
Set folder = Outlook.GetNamespace("MAPI").Folders(mailbox)
Set folder = folder.Folders("Drafts")
If MsgBox("Are you sure you want to send the " & folder.Items.count & " items in your " & mailbox & " Drafts folder?", vbQuestion + vbYesNo) <> vbYes Then Exit Sub
count = 0
Do While folder.Items.count > 0
Set msg = folder.Items(1)
msg.Send
count = count + 1
Loop
MsgBox count & " message(s) sent", vbInformation + vbOKOnly
End Sub