繁体   English   中英

如何从VBA中的Outlook发件箱发送所有电子邮件

[英]How to Send All Emails From Outlook Outbox in VBA

我正在使用Excel VBA在Outlook中暂存电子邮件,并且运行良好。

Dim template As Outlook.MailItem, tomerge As Outlook.MailItem
' Create E-mail
tomerge.Close olSave

然后可以将电子邮件手动移动到“草稿”文件夹并使用此Sub发送

'Loop through items in Drafts folder
objDrafts.Item(i).Send

但是,许多用户在“草稿”文件夹中有一堆不想发送的多余草稿。

如果我将“ olFolderDrafts”替换为“ olFolderOutbox”,并尝试从其发件箱发送邮件。 发送第一个消息,然后出现“运行时错误”“ Outlook已经开始发送此消息”。

是否可以通过某种方式从发件箱发送所有邮件, 或者更好的是可以通过某种方式登台并从新创建的文件夹发送邮件?

您需要为未发送的项目创建一个文件夹,并分别进行处理。 通常, Outbox文件夹包含已提交的项目。 因此,这不是您放置物品的合适位置。

Outlook对象模型提供Folders类的Add函数。 您可以使用Outlook中Folder类的Folders属性获取Folders类的实例。 您可以在如何:在Outlook中创建新文件夹文章中了解有关此内容的更多信息。

这个答案的灵感来自Nagarajan的上述评论,但是与Outlook Via Code中的Send / Receive中的答案相比,还需要进行很多更改。 主要问题是使用olSave不会在Outlook中将邮件置于“准备发送”状态,因此使用syc.Start 。开始同步从上面的答案起什么都没有做。

相反,我们发现以下过程很简单:

  1. 使用“发送/接收”->“脱机工作”将Outlook置于脱机模式
  2. 使用Excel VBA .Send电子邮件,而不是仅.Send.Send每封电子邮件。 由于Outlook处于脱机状态,因此它们将被暂存并准备发送,但实际上并未发送。
  3. 现在应该将电子邮件放在Outlook的“发件箱”文件夹中,并且可以进行审阅,只需确保在审阅/编辑邮件后按“发送”按钮,否则您修改的电子邮件将从队列中删除。
  4. 当邮件准备好发送时,将Outlook置于联机模式,它们将自动发送。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM