VBA wysyłanie maili poprzez Gmaila

HintMine

Witam, Dziś krótki, szybki temat tzn. odpowiedź na pytanie jak wysyłać maile z gmaila bez żadnego programu pocztowego.

 

Jest to bardzo fajny mechanizm, ale trochę niebezpieczny, bo dzięki tej funkcjonalności komputery użytkowników mogą nam słać maile zupełnie bez wiedzy swoich właścicieli… Czyli jak mawiał SpiderMan „z super mocą wiąże się super odpowiedzialność” ;)

 

No dobra koniec opisów, przechodzę do rzeczy. Cały proces wymaga od nas wykonania tylko 2 kroków:

1. Włączenie na koncie gmail z którego chcemy wysyłać wiadomości dostępu do tak zwanych mniej bezpiecznych aplikacji (żeby makro mogło się zalogować na serwer SMTP gmaila)

 

2. Napisanie kodu wysyłającego wiadomość

 

Najpierw musimy zrealizować punkt 1
To naprawdę konieczne ustawienie. Bez włączenia tej opcji wysyłka maila nie powiedzie się (dostaniemy komunikat, że „serwer jest niedostępny” czy coś w tym stylu :) Dlatego staram się opisać wszystko dokładnie krok po kroku:

 

a) odpalamy przeglądarkę (zakładam, że jesteśmy zalogowani do naszego konta gmail, jeżeli nie to najpierw logujemy się)

 

b) klikamy w prawym górnym rogu na ikonę naszego konta a następnie w niebieski przycisk „Moje konto” (vide zdjęcie 1)

 

c) pojawi się nam strona z ustawieniami naszego konta gmail (taka jak na zdjęciu 2) więc klikamy na niej w link „połączone aplikacje i witryny” (po lewej stronie)

 

d) ostatnia czynność :) na kolejnej stronie, która się nam pojawi zjeżdżamy na sam dół i klikamy w „zezwalaj na mniej bezpieczne aplikacje” (tak jak na zdjęciu 3).

Guziczek ma się zaświecić na NIEBIESKO a napis ma się zmienić na WŁĄCZONE.

 

Ok połowa roboty za nami :) Teraz przechodzimy do punktu 2, czyli piszemy kod, który wyśle za nas wiadomość.

 

Mały łyczek teorii. Nasz program będzie korzystał z interfejsu, który Microsoft nazwał CDO, czyli Collaboration Data Objects. My skorzystamy z interfejsu IConfiguration (zaczyna brzmieć poważnie ;)  Oczywiście wszystko jest 1000 razy prostsze niż się na początku wydaje :)

Wspomniany interfejs zawiera kilka obiektów z których interesuje nas Message i Configuration.

 

Dzięki configuration możemy ustawić:
– nazwę serwera SMTP z którego ma się wysłać email (u nas gmail)
– szyfrowanie (SSL)
– autentykację
– port (dla gmaila jest to 465)
– nazwa użytkownika (czyli nasz adres gmailowy)
– i może coś tam jeszcze np. hasło do konta… ;)

 

A message pozwala nam:
– stworzyć całą wiadomość
– dodać treść
– adresata
– cc i bcc
– wysłać gotowego maila

 

I znów żadna supertajna wiedza nie jest potrzebna żeby z tego wszystkiego skorzystać, wystarczy wejść na odpowiednią stronę na MSDN (np. taką https://msdn.microsoft.com/en-us/library/ms527274(v=exchg.10).aspx  ) i jest tam ładna tabelka, która pokazuje domyślne ustawienia, które wystarczy sobie spisać :)

 

No dobra to przejdę do konkretów, czyli naszego kodu:

Najpierw tworzymy 3 zmienne (korzystam z późnego wiązania, opiszę o co chodzi w kolejnym poście :)

 

Następnie standardowo przypisujemy wartości do naszych zmiennych (dla dwóch pierwszych tworzymy obiekty za pomocą funkcji create object a dla ostatniego korzystam z kolekcji Fields obiektu configuration…bla….bla…bla ;) ależ ta teoria potrafi poważnie brzmieć ;P a wygląda to po prostu tak:

 

Teraz wypełniam wszystkie interesujące mnie pola w kolekcji. Dla Waszych gmaili wszystko będzie wyglądało tak samo jak poniżej, tylko wpiszcie swoja nazwę usera i swoje hasło. Jak ktoś nie lubi podawać haseł to może sobie wstawić tam inputbox ;)

 

I już prawie koniec, jeszcze tylko wypełnimy interesujące nas elementy wiadomości (treść, temat itd. ) i będzie gotowe :)

 

I to wszystko :) dla ułatwienia zamieszczam cały działający kod poniżej, jak macie jakieś sugestie czy pytania, piszcie na michal@hintmine.com :)

 

PS.
Pamiętajcie, żeby w poniższym kodzie ZMIENIĆ w ustawieniach adres gmaila i hasło na SWOJE ;)

 

Powrót do:
Blog VBA | VBA dla trochę bardziej zaawansowanych |


Zobacz też: