VBATools

Oznaczenie lub przeniesienie niechcianych wiadomości e-maili

by 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.

OL_Oznaczenie_Maili_od_Obcych
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.

OL_Oznaczenie_Maili_od_Obcych_Regula
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.
:, , , , , , , , ,

Leave a Reply