Czy wiedziałeś, że istnieje możliwość wysyłania wiadomości Email z wiersza poleceń PowerShell systemu Windows? Tak. Istnieje taka możliwość, a na dodatek jest to banalnie proste, pod warunkiem oczywiście, że mamy połączenie z internetem. Już wyjaśniam jak to zrobić.
W Windows PowerShell < v 2.0 wysyłanie wiadomości Email było nieco trudniejsze, lecz dziś można się w tym zakresie cieszyć sporym ułatwieniem. Od wersji 2.0 PowerShell'a, do wysyłania wiadomości Email w tym środowisku służy nam cmdlet
Send-MailMessage
Ten cmdlet może być stosowany na kilka różnych sposobów, a oto jego najbardziej popularne parametry:
– Attachments (łańcuch)
Pełna ścieżka i nazwy plików, które mają zostać dołączone do wiadomości e-mail.
–Bcc (łańcuch)
Pole BCC, zawierające adresatów.
–Body
Ciało (treść) wiadomości.
–BodyAsHtml
Tej opcji należy użyć jeśli ciało wiadomości ma zostać wysłane jako HTML.
–Cc (łańcuch)
Pole CC, zawierające adresatów.
–Credential (PSCredential)
Konto, które ma uprawnienia do wysyłania wiadomości e-mail. Domyślnym kontem jest bieżący użytkownik.
–DeliveryNotificationOption Opcja
Powiadomienia o dostarczeniu zostaną wysłane na adres e-mail podany w parametrze -From.
Możliwe opcje DeliveryNotificationOption:
None – Brak Powiadomienia (domyśłnie)
OnSuccess - Powiadom, jeśli dostawa zakończyła się powodzeniem.
OnFailure - Powiadom, jeśli dostawa nie zakończyła się powodzeniem.
Opóźnienie - Powiadom, jeśli dostawa jest opóźniona.
Nigdy - Nigdy nie powiadamiaj.
–Encoding Kodowanie
Kodowanie używane dla ciała i tematu
–From (łańcuch)
Adres Email, z którego wysyłana jest poczta.
–Priority Priorytet
Low, Normal, Hogh
–SmtpServer (łańcuch)
Serwer smtp, stosoway do wysyłania wiadomości
–Subject (łańcuch)
Temat wiadomości
–To (łańcuch)
Adresat - adres email adresata wiadomości
–UseSsl
Zastosuj protokół Secure Sockets Layer (SSL) aby nawiązać połączenie z serwerem SMTP i wysłać wiadomość e-mail. SSL nie jest domyślnie używany.
Pełna ścieżka i nazwy plików, które mają zostać dołączone do wiadomości e-mail.
–Bcc (łańcuch)
Pole BCC, zawierające adresatów.
–Body
Ciało (treść) wiadomości.
–BodyAsHtml
Tej opcji należy użyć jeśli ciało wiadomości ma zostać wysłane jako HTML.
–Cc (łańcuch)
Pole CC, zawierające adresatów.
–Credential (PSCredential)
Konto, które ma uprawnienia do wysyłania wiadomości e-mail. Domyślnym kontem jest bieżący użytkownik.
–DeliveryNotificationOption Opcja
Powiadomienia o dostarczeniu zostaną wysłane na adres e-mail podany w parametrze -From.
Możliwe opcje DeliveryNotificationOption:
None – Brak Powiadomienia (domyśłnie)
OnSuccess - Powiadom, jeśli dostawa zakończyła się powodzeniem.
OnFailure - Powiadom, jeśli dostawa nie zakończyła się powodzeniem.
Opóźnienie - Powiadom, jeśli dostawa jest opóźniona.
Nigdy - Nigdy nie powiadamiaj.
–Encoding Kodowanie
Kodowanie używane dla ciała i tematu
–From (łańcuch)
Adres Email, z którego wysyłana jest poczta.
–Priority Priorytet
Low, Normal, Hogh
–SmtpServer (łańcuch)
Serwer smtp, stosoway do wysyłania wiadomości
–Subject (łańcuch)
Temat wiadomości
–To (łańcuch)
Adresat - adres email adresata wiadomości
–UseSsl
Zastosuj protokół Secure Sockets Layer (SSL) aby nawiązać połączenie z serwerem SMTP i wysłać wiadomość e-mail. SSL nie jest domyślnie używany.
Nie trzeba tych parametrów dogłębnie studiować. Jak już wspomniałem wcześniej, wysyłanie wiadomości Email z PowerShell jest banalnie proste. Zobaczmy jak to działa na prostym przykładzie. Zauważymy, że w poniższym przykładzie będzie konieczne wprowadzenie poświadczeń dla serwera SMTP w okienku pojawiającym się natychmiast po zatwierdzeniu polecenia:
A oto przykładowy kod cmdleta Send-EmailMesage wraz z przykładowymi wartościami parametrów, które możesz dostosować do własnych potrzeb, aby szybko i efektownie wysyłać wiadomości Email bezpośrednio ze środowiska PowerShell:
$From = "adminexample.com"
$To = "user1@example.com"
$Cc = "user2@example.com"
$Attachment = "C:\temp\file.txt"
$Subject = "Wiadomość testowa"
$Body = "Treść przykładowej wiaodmości"
$SMTPServer = "smtp.example.com"
$SMTPPort = "587"
Send-MailMessage -From $From -to $To -Cc $Cc -Subject $Subject `
-Body $Body -SmtpServer $SMTPServer -port $SMTPPort -UseSsl `
-Credential (Get-Credential) -Attachments $Attachment
$To = "user1@example.com"
$Cc = "user2@example.com"
$Attachment = "C:\temp\file.txt"
$Subject = "Wiadomość testowa"
$Body = "Treść przykładowej wiaodmości"
$SMTPServer = "smtp.example.com"
$SMTPPort = "587"
Send-MailMessage -From $From -to $To -Cc $Cc -Subject $Subject `
-Body $Body -SmtpServer $SMTPServer -port $SMTPPort -UseSsl `
-Credential (Get-Credential) -Attachments $Attachment
Aby przetestować wysyłanie wiadomości Email z poziomu Windows PowerShell skopiuj i wklej powyższy kod do notatnika, dostosuj parametry do własnych potrzeb, skopiuj i wklej całość do okienka PowerShell, a następnie wprowadź poświadczenia konta SMTP. W przypadku wątpliwości lub jakichkolwiek pytań proszę o komentarze!