Вы также можете добиться этого, не используя правило, но выполняя действие, подобное правилу, в коде. Например:
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim mai As Object
Dim strEntryId
For Each strEntryId In Split(EntryIDCollection, ",")
Set mai = Application.Session.GetItemFromID(strEntryId)
If mai.Parent = "Inbox" Then
If mai.SenderEmailAddress = "the-email-address-the-rule-applies-to" Then
mai.Move Application.GetNamespace("MAPI").GetFolderFromID("the-entry-ID-of-the-folder-you-want-to-move-the-message-to")
End If
End If
Set mai = Nothing
Next
End Sub
Как получить ID папки (т. е. entryID папки):
Это просто ручной способ, вы можете сделать рекурсивную процедуру, но для простых целей это нормально. Например, у меня была такая структура:
Mailbox - My_Name_Here
Inbox
The Subfolder I'm Looking For
Sent Items
...
Итак, в окне Immediate я набрал:
? Application.GetNamespace("MAPI").Folders(1)
и увеличивал число, пока не получил "Почтовый ящик - My_Name_Here"
затем я набрал:
? Application.GetNamespace("MAPI").Folders(the_number_of_my_mailbox).Folders(1)
увеличивая число, пока я не получил «Входящие».
Потом:
? Application.GetNamespace("MAPI").Folders(the_number_of_my_mailbox).Folders(the_number_of_my_Inbox).Folders(1)
увеличивая число, пока не получу «Подпапку, которую я ищу»
Потом:
? Application.GetNamespace("MAPI").Folders(the_number_of_my_mailbox).Folders(the_number_of_my_Inbox).Folders(the_number_of_the_subfolder_i_was_looking_for).EntryID
Вот и все: ID записи папки, в которую я хотел переместить сообщение. Вы поняли, я уверен :)
person
Risto Pönni
schedule
18.11.2009