Oznaczenie lub przeniesienie niechcianych wiadomości e-maili
by vbatools on Jan.25, 2012, under Outlook, Porady
Dużym problemem jest fakt odbierania niechcianej poczty. Czy tego chcemy czy nie nasze adresy są sprzedawane lub pozyskiwane w inny sposób przez firmy reklamujące swoje usługi. Firmy tworzące programy antywirusowe prześcigają się w mechanizmach realizujących modyfikacje wiadomości tak, aby w dużym prawdopodobieństwie użytkownik miał świadomość, iż odebrana poczta nie pochodzi od nikogo, z kim wcześniej korespondujemy.
Można do tego tematu podejść z innej strony. Na kształt naszych reakcji, gdy podczas odbierania rozmowy z telefonu komórkowego spoglądamy, kto do nas dzwoni i tak potraktujemy pocztę przychodzącą. W większości nasza korespondencja jest zorientowana na osoby, jakie mamy w folderze kontakty.
Rys 1. Widok oznaczenia niechcianej poczty w konfiguracji POP3
Powyżej przedstawiony sposób, który pokazuje jak możemy, przy wyciągnięciu pola kategorie oznaczyć te wiadomości, jakich wcześniej nie dodaliśmy do kontaktów. Taka modyfikacja wiadomości daje nam dodatkowe możliwości: np. sortowanie po danej kolumnie, gdzie z góry możemy spodziewać się że w węźle „ALIEN” będzie sama nieautoryzowana poczta.
Podczas umieszczania kodu w developerze VBA, należy wiedzieć, iż dla kont IMAP/Exchange wiadomości nie mogą być modyfikowane. Struktura i założenia tych kont pozwala jedynie synchronizować wiadomość z miejscem jego alokacji. Wszelkie modyfikacje treści, tematu czy innych pól standardowych nie powiedzie się. W tym celu najlepszym sposobem jest przesuniecie wiadomości do innego folderu (w przykładzie folder „Wiadomości-śmieci”, który to może być zamieniony na inny, utworzony przez użytkownika folder).
Sub Incoming_contact_found(oMail As MailItem) 'MVP OShon form VBATools.pl If oMail.Class <> olMail Then Exit Sub Dim adres$, oContactFolder As MAPIFolder Dim oItems As Items, oContact As ContactItem 'Dim oDestFolder As Outlook.Folder 'dla kont Imap/Exchange 'Set oDestFolder = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderJunk) adres = oMail.SenderEmailAddress 'Recipients(1).Address 'for oldest version Set oContactFolder = Application.GetNamespace("MAPI"). _ GetDefaultFolder(olFolderContacts) Set oItems = oContactFolder.Items FindContact = False adres = """" & adres & """" Set oContact = oItems.Find("[Email1Address] =" & adres & " or " & _ "[Email2Address] =" & adres & " or [Email3Address] =" & adres & "") If oContact Is Nothing Then oMail.Categories = "ALIEN" 'tylko dla kont POP3 oMail.Save 'oMail.Move oDestFolder 'dla Imap/Exchange jako przeniesienie do innego folderu end if 'Set oDestFolder = Nothing Set oContactFolder = Nothing Set oContact = Nothing Set oItems = Nothing End Sub
Procedurę umieszczamy w module [Alt+F11]/Menu/Insert/Module a następnie zapisujemy nasz projekt.
Rys 2. Podłączenie reguły w Outlooku
Rysunek nr 2. pokazuje jak podpiąć sparametryzowaną procedurę, jako regułę ze skryptem.
Powyższą procedurę możemy rozszerzyć np. o nadanie koloru wiadomości, przesłać na inne konto lub przesunąć wprost do folderu „Elementy usunięte”. Możemy też poddać sprawdzenia wiadomości przychodzącej z inną książką adresową, lub z kilkoma.
(c) Shon Oskar – www.VBATools.pl
Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.