PowerShell — отправить письмо на почту

PowerShellВсем привет! В этой небольшой статье я вам расскажу — как отправить письмо на почту через PowerShell. Сегодня возьмем какой-нибудь текст. В рамках автоматизации процессов (не важно каких), иногда появляется необходимость получить информацию прямо с сервера. Для таких целей можно воспользоваться решением, которое представлено ниже.

PowerShell — как отправить письмо на почту

Давайте разберем простой пример, который мы в дальнейшем немножечко разовьем. Итак, что нужно для того, чтобы отправить письмо на почту через PowerShell?

  1. Адресат — адресат, который будет отправлять почту. Как правило это должен быть какой-то системный ящик, находящийся в домене.
  2. Получатель — электронная почта, которая будет принимать сообщения, после выполнения скрипта.
  3. Тема сообщения — ее можно оставить пустой, но мы ее разберем, так как она является одной из переменных, которые внесут целостность и понимание составления структуры письма.
  4. Тело письма — думаю тут все понятно. Хотя, мы с вами разберем интересную ситуацию, в которой необходимо переносить строчку в письме.
  5. Почтовый сервер — это обязательный реквизит, потому что почтовый сервер осуществляет необходимые операции по обработке и отправке письма.
  6. Далее необходимо создать объект, который будет являться smtp клиентом, подключенным к почтовому серверу.

Окей, с требованиями разобрались, как это все выглядит в коде? Все просто. Создаем файл с расширением *.ps1, назовем его test.ps1. Что нужно внутри? Переменные сохранены в соответствии с пунктами выше:

  1. $EmailFrom = «email@domain.ru»
  2. $EmailTo = «email@email.ru»
  3. $Subject = «test»
  4. $Body = «test»
  5. $SmtpServer = «post.domain.ru»
  6. $smtp = New-Object net.mail.smtpclient($SmtpServer)
  7. $smtp.Send($EmailFrom, $EmailTo, $Subject, $Body)

Откуда взялся 7-ой пункт? А это и и есть ответ на вопрос «как отправить письмо на почту через PowerShell» . В этом пункте мы сказали Smtp-клиенту отправить письмо, от адресата пункта 1, получателю пункта 2, с темой письма пункта 3, и содержимым пункта 4. Что получилось и как проверить? Правой кнопкой мыши по нашему файлу -> Run with powershell…

PowerShell - отправить письмо на почту

Кастомизация.

Итак… Выглядит не очень, простенько, что тут еще скажешь, какой код, такой и вывод. Давайте попробуем украсить. Добавил имя сервера в Subject, с которого выполняется скрипт и в тело добавим папку профиля PowerShell:

Запускаем, проверяем…

PowerShell - отправить письмо на почту

Окей, приступим к разбору изменений. Добавилась новая переменная (первая строка) $server=hostname. Дело в том, hostname является командлетом, и чтобы переменная получила значение, необходимо выполнить этот командлет. Соответственно имя сервера попало в тему письма, а именно SOFT889.

Далее в строке 5 произошли изменения содержимого: «Рабочая папка: $profile». PowerShell способен обрабатывать системные переменные во время передачи строки. Получили соответствующий результат. Давайте усложним… Например, выведем имя операционной системы, но на новой строке. Меняем код так:

Выполняем:

PowerShell - отправить письмо на почту

Отлично, разнообразили. Давайте разбираться.

  1. Добавили строку с определением операционной системы — $os=(Get-WmiObject -class Win32_OperatingSystem).Caption
  2. В $Body добавили строку, которая отвечает за перенос строки и склейку этих строк в одну переменную — «+ [System.Environment]::NewLine +»
  3. Добавили вывод новой переменной с названием операционной системы — «»Название операционной системы: $os».

Итог:

Мы научились отправлять письмо на почту через PowerShell, кастомизировали его, научились работать с функцией (или методом) отправки письма smtp клиента. В дальнейшем будем более детально изучать компоненты и их ответвления/вариации. Спасибо за внимание! Подписывайтесь на наш Youtube и группу в ВК. Ну и на печеньки к чаю тоже было бы неплохо 🙂

Лицензионное соглашение

Авторские права публикуемых материалов полностью или частично принадлежат авторам сайта Pechenek.NET в соответствии со статьями 1252 и 1301 ГК РФ. Любое распространение должно быть согласовано с автором материала или с указанием ссылки на первоисточник.