Outlook 规则将“已发送邮件”移动到其他人的“已发送邮件”文件夹

Outlook 规则将“已发送邮件”移动到其他人的“已发送邮件”文件夹

似乎在发送邮件时,我用来将已发送邮件移至另一个邮箱的已发送邮件文件夹的规则未得到处理。如果我手动使用“立即处理规则”按钮,它会按预期工作。

有什么办法可以:

  • 使用“发送为”时将这些已发送邮件直接放入邮箱,不受规则限制

  • 如果需要使用规则,如何确保在发送邮件后立即处理它们

答案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 上:

发送文件夹来源

相关内容