PowerShell: wysyłka email z konta Gmail

Wysyłka wiadomości email z użyciem PowerShell? Z użyciem darmowego konta pocztowego Gmail? Mamy sprawdzony sposób jak użyć do tego polecenia Send-MailMessage

Jak wysłać potwierdzenie realizacji naszego skryptu? A może załączyć plik log jakiegoś zadania i wysłać go mailem z poziomu PowerShell’a. Z pomocą przychodzi nam polecenie Send-MailMessage. Samo polecenie ma kilka wymaganych parametrów o których możecie dokładnie poczytać na stronach dokumentacji Microsoft. Wiele z parametrów zależy od konkretnych wymagań obsługiwanych przez daną skrzynkę pocztową a raczej jej serwer. Co zrobić aby użyć do tego celu skrzynki Gmail? Rzućmy okiem na poniższy skrypt:

$credentials=new-object Management.Automation.PSCredential “sprawdzone.it@gmail.com”, (“424skfkDJWdla23weir.22f” | ConvertTo-SecureString -AsPlainText -Force)


 $param = @{
     SmtpServer = 'smtp.gmail.com'
     Port = 587
     UseSsl = $true
     Credential  = $credentials
     Encoding = 'utf8'
     From = 'sprawdzone.it@gmail.com'
     To = 'info@sprawdzone.it'
     Subject = '[alert] uwaga bład'
     Body = "Wiadomość automatyczna - proszę nie odpowiadać"
     Attachments = 'C:\scripts\log\scriptlog.txt'
 }


 Send-MailMessage @param

Pierwsza linia kodu to poświadczenia a raczej zmienna do której je zapisujemy – tutaj sposobów jest wiele, od monitu do ich podania przez zapisanie ich w bezpieczny sposób aż po jawne podanie hasła (dla uproszczenia wybraliśmy NIEBEZPIECZNĄ opcje)

Następnie tworzymy zmienną tablicową która zawiera wszystkie nasze niezbędne parametry do wysyłki wiadomości wraz z załącznikiem. Nazwy parametrów są dość oczywiste i nie będziemy ich tutaj opisywać.

Ostatnia linia to wysyłka takiej wiadomości z użyciem polecenia Send-MailMessage.

Jak widzicie parametry odnośnie nazwy serwera SMTP, portu, SSL są skonfigurowane pod usługę Gmail. Zanim jednak spróbujecie użyć powyższy kod do wysyłki wiadomości należy zalogować się na konto Google, przejść do jego ustawień a dokładnie do zakładki dotyczącej bezpieczeństwa. Ze względu na specyfikę konta Google należy włączyć obsługę: „Dostęp mniej bezpiecznych aplikacji”

Jeżeli tego nie zrobimy wysyłka wiadomości z użyciem konta Gmail będzie skutkować komunikatem:

Send-MailMessage : The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Authentication Required.

Po włączeniu w/w opcji wysyłka działa bez zarzutu! Każdy nasz skrypt może od teraz wysłać nam log z wykonania zadania albo zwykłe potwierdzenie o sukcesie lub niepowodzeniu.


UWAGA: Obecne zabezpieczenia kont Google wymagają aby przed wysyłką z danej maszyny (o innym IP publicznym) choć raz zalogować się przez przeglądarkę. Tak aby Google dodało adres IP do listy miejsc z której się logujemy. Inaczej pomimo włączenia „Dostępu mniej bezpiecznych aplikacji” nadal będziemy otrzymywać powyższy komunikat