Отправка почты из скрипта

enterpass

Недавно на форуме был поднят вопрос об использовании Send-SmtpMail.ps1 из скрипта который запускается в шедулере. Причем на сервере требуется аутентефикация, и соответственно необходимо использовать сохранённый пароль. Собственно с этим и возникла сложность.

 

Первая сложность — безопасность. Хранить пароль в расшифровываемом виде само по себе не очень безопасно, но это лучше чем хранить его открытым текстом. Решение этой проблемы я вобщем уже описывал в этом посте.

Вторая сложность в том что нам нужен не просто пароль, а объект типа Credentials, для передачи его в объект SmtpClient.

Короче говоря в результате получилось следующее решение:

Сначала под учетной записью того пользователя под которым будет запускаться скрипт выполняем следующий код:

Read-Host -Prompt "Enter password" -AsSecureString | ConvertFrom-SecureString | Set-Content password.txt

Будет запрошен пароль, который затем в зашифрованном виде будет помещён в файл password.txt. Причем для шифрования будет использован ключ текущего пользователя, то есть расшифровать его сможет тоже только он.

Теперь чтобы использовать пароль в скрипте, его сначала надо поместить в переменную типа SecureString. Делается это следующим образом:

$SecStr = Get-Content password.txt | ConvertTo-SecureString

Теперь в переменной $SecStr содержится зашифрованный пароль, расшифровывать его нам и не понадобится (то есть он даже в памяти не хранится в открытом виде). Нам нужно лишь создать на основе этого пароля и имени пользователя объект PSCredentials:

$c = New-Object System.Management.Automation.PSCredential("xaegrr",$SecStr)

Всё, теперь можно использовать:

Send-SmtpMail.ps1 -to $MyEmail -from $GmailMail -server smtp.gmail.com -SSL -Cred $c -Subject "Test passed"

Готово🙂 Разумеется в скрипте лучше всё таки указывать полные пути и к скрипту и к файлу с паролем.

Кстати, я обновил текст скрипта Send-SmtpMail.ps1, там почему то лежала старая версия, без поддержки SSL и учетных данных😦 Сорри😦

Опубликовано в Learn, PowerShell, Practice, Scripting, Tips. 1 Comment »

Один ответ to “Отправка почты из скрипта”

  1. PowerShell и другие скрипты : Отправка почты из скрипта Says:

    […] Недавно на форуме был поднят вопрос об использовании Send-SmtpMail.ps1 из скрипта который запускается в шедулере. Причем на сервере требуется аутентефикация, и соответственно необходимо использовать сохранённый пароль. Собственно с этим и возникла сложность. Читать далее… […]


Обсуждение закрыто.

%d такие блоггеры, как: