我使用Outlook(MS Exchange)并拥有一个人和两个组收件箱(我正在使用个人配置文件登录,通过该配置文件我也可以访问组收件箱)。
当我发送电子邮件时,我选择了我个人或From
字段中的两个群组电子邮件地址之一。发送电子邮件后,我希望保存在myIndividualMailbox
,groupAMailbox
或groupBMailbox
的收件箱中的副本,具体取决于我使用的From
电子邮件地址。
示例:如果我发送电子邮件From
groupA@myCompany.com ,我想要保存在{{收件箱中的电子邮件的副本1}}(而不是我个人的收件箱)。
我已经明白,通过在Outlook中设置规则是不可能的,但可以使用 VBA宏来完成。我现在不知道如何编写VBA宏,也不知道这是一个简短的脚本还是更复杂的脚本。事实上,我从未在Outlook中编写宏,所以我甚至不知道如何开始。谁能说明如何做到这一点?
我开始寻找这个问题的解决方案:Outlook send-rule that filter on the 'From' field
答案 0 :(得分: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对象中构建了事件功能,但是通过测试,您仍然需要执行上面概述的操作。
答案 1 :(得分:0)
Outlook将所有已发送的项目存储在默认发送的项目文件夹中。但是,您可以应用修补程序将已发送的项目保存在自己的文件夹中。 http://support.microsoft.com/kb/2181579