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 и группу в ВК. Ну и на печеньки к чаю тоже было бы неплохо 🙂

0

Автор публикации

не в сети 51 минута

Vapi

0
Комментарии: 20Публикации: 74Регистрация: 14-04-2017

Поделиться в соц. сетях:

Понравилась статья? Поблагодари автора, накорми печеньками! :)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *