似乎在发送邮件时,我用来将已发送邮件移至另一个邮箱的已发送邮件文件夹的规则未得到处理。如果我手动使用“立即处理规则”按钮,它会按预期工作。
有什么办法可以:
使用“发送为”时将这些已发送邮件直接放入邮箱,不受规则限制
如果需要使用规则,如何确保在发送邮件后立即处理它们
答案1
我认为你无法实现自动化,因为规则设计为在电子邮件发送之前运行,而不是在发送邮件已處理。
唯一的其他选项是手动触发规则(如您已说明的)或创建执行移动的宏,并将宏分配给工具栏上的按钮。虽然这更容易启动,但设计宏来执行您想要的操作会困难得多。
答案2
使用发送的邮件文件夹的“ItemAdd”事件,而不是邮件项目的“发送”事件。
我发现这个帖子Rob Gravelle 解释了为什么使用将电子邮件添加到“已发送邮件”的事件作为触发器更容易。
Gravelle 提供了此示例 VBA 脚本,如果收件人地址包含“RobGravelleAndCo.com”,则将已发送项目移动到“FOSS Export (CR-035)”:
Option Explicit
Public WithEvents oSentItems As Items
Private oBusinessFolder As MAPIFolder
Private Const BUSINESS_FOLDER = "FOSS Export (CR-035)"
Private Const PARTNER_EMAIL_ADDRESS = "RobGravelleAndCo.com"
Private Sub Application_Startup()
Dim oSentItemsFolder As MAPIFolder
Set oSentItemsFolder = Application.Session.GetDefaultFolder(olFolderSentMail)
Set oSentItems = oSentItemsFolder.Items
Set oBusinessFolder = oSentItemsFolder.Parent.Folders(BUSINESS_FOLDER)
End Sub
Private Sub oSentItems_ItemAdd(ByVal item As Object)
Dim oRecipient As Recipient
Select Case item.Class
Case olMail, olMeetingRequest
For Each oRecipient In item.Recipients
If InStr(1, oRecipient.Address, PARTNER_EMAIL_ADDRESS) Then
item.Move oBusinessFolder
Exit For
End If
Next
End Select
End Sub
我希望 Outlook 根据“发件人”字段而不是“收件人”字段选择“已发送邮件”文件夹。我将 Gravelle 的脚本修改为 VSTO 插件,每次使用新的“发件人”地址时都会提示“已发送邮件”文件夹。如果有人想尝试或分叉它,我将源代码发布在 GitHub 上: