Итак, вы ищете правило «Где мое имя отсутствует в полях Кому или Копия», но это единственное правило, которого у них нет в мастере. Я надеюсь, что у меня есть это право.
Я не знаю ни одного подобного дополнения, но возможно накатить свое. В этой статье MSDN показано, как получить доступ к Outlook 2007 и создать надстройку.
Или вы могли бы сделать это в макросах VBA, на самом деле ... вот этот, который я написал, будет делать то, что вы хотите, просто настройте константы по своему вкусу. В Outlook откройте редактор макросов (Alt+F11) и вставьте его в модуль ThisOutlookSession. Если вы не добавили туда макросы, он должен быть пустым.
Вам нужно будет включить макросы, если это еще не сделано, через меню Сервис -> Макросы -> Безопасность. Если установлено «Предупреждения для всех макросов», вам будет предлагаться каждый раз, когда вы открываете Outlook, что нормально. Повторно откройте Outlook после сохранения макроса.
'# [Outlook VBA custom mail mover by keyboardMonkey]
'# Checks new email if YOUR_NAME does not appear in the TO or CC list.
'# moves the message to DESTINATION_FOLDER.
'# Note: DESTINATION_FOLDER must be a child of the Inbox node, not a sibling.
Const YOUR_NAME As String = "Wesley"
Const DESTINATION_FOLDER As String = "testfolder"
'// hook into the outlook items events
Public WithEvents myOlItems As Outlook.Items
Public Sub Application_Startup()
' get the inbox item collection
Set myOlItems = Outlook.Session.GetDefaultFolder(olFolderInbox).Items
End Sub
'// called on mail item add
Private Sub myOlItems_ItemAdd(ByVal Item As Object)
If TypeName(Item) = "MailItem" Then
' get strongly typed object
Dim mymail As MailItem
Set mymail = Item
' flags if our name appears in each of the fields
Dim name_in_to As Boolean
Dim name_in_cc As Boolean
name_in_to = InStrB(1, mymail.To, YOUR_NAME) > 0
name_in_cc = InStrB(1, mymail.CC, YOUR_NAME) > 0
'#Uncomment below to show mail item details
' MsgBox (mymail.Subject + " has me in TO: " + Str(name_in_to) + " and CC: " + Str(name_in_cc))
' are we mentioned in the header?
If (Not name_in_to And Not name_in_cc) Then
' start with each main mapi folder
Dim idx As Integer
For idx = 1 To Outlook.Session.Folders.Count - 1
' recurse into subfolders
Dim dest As Outlook.MAPIFolder
Set dest = GetFolder(Outlook.Session.Folders.Item(idx), DESTINATION_FOLDER)
' we found our destination!
If Not (dest Is Nothing) Then
mymail.Move dest
Exit For
End If
Next
End If
' house cleaning
Set mymail = Nothing
End If
End Sub
'// to iterate is human. to recurse, divine
Private Function GetFolder(parent As Folder, name As String) As Outlook.MAPIFolder
Dim idx As Integer
Dim res As Object
For idx = 1 To parent.Folders.Count
Set res = GetFolder(parent.Folders.Item(idx), name)
If Not res Is Nothing Then
Set GetFolder = res
Exit For
End If
Next
If (parent.name = name) Then
Set GetFolder = parent
End If
End Function