2

我使用 Outlook (MS Exchange) 并拥有一个个人和两个组收件箱(我正在使用个人配置文件登录,通过该配置文件我也可以访问组收件箱)。

当我发送电子邮件时,我在该From字段中选择了我的个人或两个组电子邮件地址之一。发送电子邮件时,我希望将副本保存在 、 或取决于我使用的电子邮件地址的myIndividualMailbox收件groupAMailboxgroupBMailboxFrom

示例:如果我发送电子邮件From groupA@myCompany.com,我希望将电子邮件副本保存在groupAMailbox而不是我的个人收件箱)的收件箱中。

我了解到,通过在 Outlook 中设置规则是不可能的,但可以使用VBA 宏来完成。我现在不知道如何编写 VBA 宏,也不知道这是否只是一个简短的脚本或更复杂的脚本。事实上,我从未在 Outlook 中编写过宏,所以我什至不知道如何开始。谁能展示如何做到这一点?

我开始寻找这个问题的解决方案:Outlook send-rule that filter on the 'From' field

4

2 回答 2

1

据我所知,我为你做了这个,它有效。您应该将它放在 Microsoft Outlook 对象 - ThisOutlookSession 模块中。

请注意,myolApp_ItemSend除非您先运行,否则该事件永远不会触发enableEvents。并且您需要确保每次关闭重新打开的 Outlook 时都启用它。这需要一些定制,但它应该给你一个大致的想法。

Option Explicit
Public WithEvents myolApp  As Outlook.Application

Sub enableEvents()
    Set myolApp = Outlook.Application
End Sub

Private Sub myolApp_ItemSend(ByVal item As Object, Cancel As Boolean)
    Dim items As MailItem
    Dim copyFolder As Outlook.Folder
    Dim sentWith As String
    'Identify sender address
    If item.Sender Is Nothing Then
        sentWith = item.SendUsingAccount.SmtpAddress
    Else
        sentWith = item.Sender.Address
    End If

    'Determin copy folder based on sendAddress
    Select Case sentWith
        Case "groupA@myCompany.com"
            'get groupAMailbox's inbox
            Set copyFolder = Application.GetNamespace("MAPI").folders("groupAMailbox").folders("Inbox")
        Case "myE-mailAddress"
            'get My inbox
            Set copyFolder = Application.GetNamespace("MAPI").folders("myE-mailAddress").folders("Inbox")
    End Select

    'copy the Item
    Dim copy As Object
    Set copy = item.copy
    'move copy to folder
    copy.Move copyFolder

End Sub

编辑:看起来他们现在实际上已经将事件功能直接构建到 Outlook 的 Application 对象中,但是通过测试,您仍然必须执行我上面概述的操作。

于 2012-09-07T16:01:39.263 回答
0

Outlook 将所有已发送项目存储在默认已发送项目文件夹中。但是,您可以应用补丁将已发送的项目保存在其自己的文件夹中。 http://support.microsoft.com/kb/2181579

于 2013-07-15T18:12:51.623 回答