Microsoft Outlook troubleshooting

Dużym problemem jest niechciana poczta. 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 korespondowalismy.

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 kontaktów.


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 niezautoryzowana 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, FindContact As Boolean
Dim oItems As Items, oContact As ContactItem
'Dim oDestFolder As Outlook.Folder 'for Imap/Exchange account
'Set oDestFolder = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderJunk)


adres = oMail.SenderEmailAddress 'Recipients(1).Address 'dla starszych wersji
    Set oContactFolder = Application.GetNamespace("MAPI"). _
                GetDefaultFolder(olFolderContacts)
    Set oItems = oContactFolder.Items
  
    FindContact = False
    adres = """" & adres & """"
   
    On Error GoTo dalej
    Set oContact = oItems.Find("[Email1Address] =" & adres & " or " & _
          "[Email2Address] =" & adres & " or [Email3Address] =" & adres & "")
  
    While Not oContact Is Nothing
    DoEvents
        FindContact = True
        GoTo dalej
    Wend
dalej:
If FindContact = False Then
   oMail.Categories = "ALIEN" 'tylko dla POP3
   oMail.Save
   'oMail.Move oDestFolder    'dla Imap/Exchange 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.

MVP Shon Oskar – VBATools.pl
Jeśli masz pytania dot. tego artykułu zapraszam na Forum
Skonfiguruj swój pakiet dodatków do Excela, Worda, PowerPointa i Outlooka



© Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.