Главная > Powershell > Powershell: пишите письма

Powershell: пишите письма

Сегодняшняя статья – небольшая заметка о том, как можно быстро отправить email используя Powershell.

Для начала необходимо определить атрибуты сообщения, такие как адреса отправителя, получателя, тему письма, само тело письма и SMTP сервер:

# Адрес отправителя
$sender = "sender@maildomain.com"

# Адрес получателя
$recipient = "recipient@maildomain.com"

# SMTP сервер
$server = "smtp.maildomain.com"

# Тема письма
$subject = "Привет от Powershell"

# Текст письма
$body = "Это письмо создано и отправлено из Powershell"

Далее нужно создать экземпляр класса System.Net.Mail.MailMessage, передав ему в качестве параметров адреса отправителя и получателя, а также тему и тело письма:

$message = New-Object system.Net.Mail.MailMessage $sender, $recipient, $subject,
           $body

При желании/необходимости можно отправить файл вложения, для чего нужно создать соответствующий объект и прикрепить его к письму:

$file = "C:\WINDOWS\log.txt"
$attachment = New-Object System.Net.Mail.Attachment $file
$message.Attachments.Add($attachment)

Далее нужно создать объект System.Net.Mail.SmtpClient, указав в качестве параметра имя SMTP-сервера:

$SMTP = New-Object system.Net.Mail.SmtpClient $server

Также необходимо указать учётные данные пользователя, который отправляет письмо, другими словами – логин и пароль почтового ящика отправителя. Эти данные нужно записать в свойство credentials объекта System.Net.Mail.SmtpClient:

$SMTP.credentials = New-Object system.Net.NetworkCredential "login", "password"

Теперь всё готово для отправки письма. Осталось только отправить. Для этого нужно вызвать метод send объекта System.Net.Mail.SmtpClient с параметром – ссылкой на соответствующий объект System.Net.Mail.MailMessage:

$SMTP.send($message)

Это, конечно, не заменит полноценный почтовый клиент, но может обеспечить отправку каких-либо уведомлений, пересылку логов и т.д.

Реклама
Рубрики:Powershell Метки: ,
  1. Kazun
    25/05/2011 в 23:26

    Зачем сие телодвижения,когда есть командлет Send-MailMessage,который использует данный .Net класс System.Net.Mail.MailMessage?

    • 26/05/2011 в 08:31

      Согласен, так проще. К своему стыду признаю, что Send-MailMessage был мне не знаком, и по старинке со времён Powershell версии 1.0 я пользовался вышеописанным способом. А этот командлет появился в версии 2.0.

  1. 14/05/2014 в 13:57

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

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