Etykiety

wtorek, 5 grudnia 2017

Wysyłanie wiadomości Email z PowerShell

Bywają sytuację, w których zależy nam na szybkim skorzystaniu z wiersza poleceń, na przykład aby niezawodnie wysłać wiadomość Email z komputera na którym ciężko jest uruchomić cokolwiek innego. Z doświadczenia wiem dobrze, że takie sytuacje zdarzają się nierzadko.

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.

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

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!

7 komentarzy:

  1. Świetnie się to czyta, ja ze swojej strony mogę polecić kasy fiskalne wroclaw

    OdpowiedzUsuń
  2. Dobry post i bardzo przydatny. Właśnie studiuje i czegoś takiego potrzebowałem.
    ____________
    OXYGEN

    OdpowiedzUsuń
  3. Bardzo przydatny wpis. Na pewno wkrótce z niego skorzystam :)

    ___________________
    http://www.lobo-technik.pl/

    OdpowiedzUsuń
    Odpowiedzi
    1. Świetnie to opisałeś , teraz uważam że jest to naprawdę bardzo łatwe.
      _________
      Maszczyk

      Usuń
  4. Przydatny wpis. Tego właśnie szukałam, pozdrawiam!
    ___________________
    Plomby sklep

    OdpowiedzUsuń
  5. Super wpis właśnie chciałem zacząć używać tego powershella w windowsie bo jednak bardzo się przydaje do korespondencji mejlowej i nie trzeba wchodzić na strony i szukać na stronach. Wersja 2.0 daje spore możliwości teraz i myślę że zacznę korzystać z tego programu. Tylko muszę powiązać sobie konta i zobaczyć dokładnie o co chodzi i jak się obsługuje ten program.
    ____________
    https://www.e-msi.pl/obieg-dokumentow/

    OdpowiedzUsuń
  6. Takie wysyłanie wiadomości jest fajną opcją ale po co to robić skoro są łatwiejsze i szybsze do ogarnięcia metody? Jako ciekawostka, super. Ale jako coś praktycznego to już nie bardzo. Tu http://przestrzen-wiedzy.pl/ podali kilka fajnych propozycji na ogarnięcie tego w kilka sekund praktycznie :D

    OdpowiedzUsuń

Dodaj komentarz