Vì vậy, bạn đang tìm kiếm quy tắc "Trường hợp tên của tôi không nằm trong trường Đến hoặc Cc", nhưng đó là quy tắc mà họ không có trong trình hướng dẫn. Tôi hy vọng tôi có quyền đó.
Tôi không biết bất kỳ bổ trợ nào như vậy, tuy nhiên có thể tự cuộn. Bài viết MSDN này cho thấy cách truy cập Outlook 2007 và xây dựng một addin.
Hoặc bạn có thể làm điều này trong các macro VBA, thực sự ... ở đây cái này tôi đã viết sẽ làm những gì bạn muốn, chỉ cần cấu hình các hằng số theo ý thích của bạn. Trong Outlook, mở trình soạn thảo macro (Alt + F11) và dán phần này vào mô-đun ThisOutlookSession. Trừ khi bạn đã thêm macro ở đó trước đó, nó sẽ trống.
Bạn sẽ cần bật macro , nếu chưa có, thông qua menu Công cụ -> Macro -> Bảo mật. Nếu được đặt trên 'Cảnh báo cho tất cả các macro' thì bạn sẽ được nhắc mỗi lần bạn mở Outlook, điều này rất tốt. Mở lại Outlook sau khi lưu macro.
'# [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