发送后转发电子邮件的 Outlook 宏

Outlook macro to forward email after sending

我正在尝试创建一个可以在我发送电子邮件后自动转发电子邮件的宏。我正在使用 Application_ItemSend 来触发带有一些输入的用户表单,然后我想使用其中一些输入转发电子邮件。如果我只是发送一封新电子邮件而不是转发原始电子邮件,那么我目前正在做的事情就可以正常进行。我假设问题是在 ItemSend 宏完成之前不会发送原始电子邮件,并且我无法转发尚未发送的电子邮件。我想知道如何编写一个在电子邮件发送后 运行 的宏。

你走对了——你需要等到物品寄出。通常 Outlook 将已发送的项目放入 Sent Items 文件夹,因此您可以在 Sent Items 文件夹上连接 ItemAdd 事件并转发原始已发送的电子邮件。

Public WithEvents myOlItems As Outlook.Items 

Public Sub Initialize_handler()  
 Set myOlItems = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderSentMail).Items  
End Sub  

Private Sub myOlItems_ItemAdd(ByVal Item As Object)  
 Dim myOlMItem As Outlook.MailItem  
 myOlMItem = Item.Forward()
 myOlMItem.Recipients.Add "Eugene Astafiev" 
 myOlMItem.Send  
End Sub

请注意,用户或其他 add-ins(VBA 宏)可以设置自定义文件夹以在 Outlook 中保存已发送的项目。在这种情况下,您需要检查 MailItem.SaveSentMessageFolder 属性 哪个 returns 或设置一个 Folder 对象,该对象表示之后将保存电子邮件副本的文件夹被发送。因此,您还需要在该文件夹上设置一个挂钩。您可以在 ItemSend 事件处理程序中执行此操作。