Wysyłka email z Powershell

Aby wysłać wiadomość email z poziomu powershell wydajemy polecenie

Send-MailMessage -From [email protected] -To [email protected] -Subject "Temat wiadomości" -Body "Zawartość wiadomości" -SmtpServer smtp.domena.pl -Port 587

Powyższe polecenie wysyła wiadomość bez autoryzacji. W przypadku gdy serwer za pośrednictwem którego chcemy wysłać wiadomość wymaga autoryzacji musimy przekazać dane autoryzacyjne. W pierwszej kolejności zapiszemy dane do zmiennej

$cred = get-credential

Po wydaniu powyższego polecenia pokaże nam się okno w którym wprowadzamy dane autoryzacyjne

Następnie wysyłamy wiadomość wydając polecenie

Send-MailMessage -From [email protected] -To [email protected] -Subject "Temat wiadomości" -Body "Zawartość wiadomości" -Credential $cred -SmtpServer smtp.domena.pl -Port 587

Rozwiązanie to jednak nie nadaje się do wykorzystania w automatycznych skryptach. Hasło musimy automatycznie w jakiś sposób przekazać. W tym celu możemy zapisać zakodowane hasło do pliku wydając polecenie

„haslo_do_konta” | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File „c:\password.txt”

Hasło zapisane w powyższy sposób możemy następnie wykorzystać w skrypcie w następujący sposób

#zapis nazwy użytkownika do zmiennej
$User = "login"
#zapisanie w zmiennej scieżki do pliku z zakodowanym hasłem
$File = "C:\password.txt"
#zapisanie danych logowania do zmiennej
$cred=New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, (Get-Content $File | ConvertTo-SecureString)
#wysyłka wiadomości
Send-MailMessage -From [email protected] -To [email protected] -Subject "Temat wiadomości" -Body "Zawartość wiadomośc" -Credential $cred -SmtpServer smtp.domena.pl -Port 587