Отправка почты с помощью Powershell

Один из способов отправки почты через smtp-сервер с помощью Powershell:

$smtpServer = "smtp.server.ru"
$smtpFrom = "sender@server.ru"
$smtpTo = "recipient@server.ru"
$messageSubject = "Subject"
$messageBody = "Message body"
$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($smtpFrom,$smtpTo,$messagesubject,$messagebody)

В Powershell 2.0 можно отправить письмо несколько проще:

Send-MailMessage -From "sender@server.ru" -To "recipient@server.ru" -Subject "Subject" -Body "Message body"

Предварительно надо указать smtp-сервер в переменной $PSEmailServer:

$PSEmailServer = "smtp.server.ru"

Или добавить к командлету Send-MailMessage параметр –SmtpServer

Update:

Если необходимо указать логин и пароль для подключения к SMTP-серверу, то нужно добавить в скрипт следующие параметры:

$secpasswd = ConvertTo-SecureString "password" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("username", $secpasswd)

И добавить к командлету параметр -credential

Send-MailMessage -From "sender@server.ru" -To "recipient@server.ru" -Subject "Subject" -Body "Message body" -credential $mycreds
Запись опубликована в рубрике IT с метками , . Добавьте в закладки постоянную ссылку.

7 комментариев на «Отправка почты с помощью Powershell»

  1. Сергей говорит:

    Задаю в $Body = скрипт, указываю в -Body $body, а сообщение пустое, не могу понять, подскажите пожалуйста

  2. Михаил говорит:

    Спасибо , работает.
    А как добавить файл ?

    • Fray говорит:

      Отправка письма с вложением:

      $emailFrom = "user@yourdomain.com"
      $emailTo = "user@yourdomain.com"
      $subj = "your subject"
      $body = "your body"
      $file = "c:\file.txt"
      $smtpServer = "your smtp server"

      $att = new-object Net.Mail.Attachment($file)
      $smtp = new-object Net.Mail.SmtpClient($smtpServer)
      $msg = new-object Net.Mail.MailMessage

      $msg.From = $emailFrom
      $msg.To.Add($emailTo)
      $msg.Subject = $subj
      $msg.Body = $body
      $msg.Attachments.Add($att)

      $smtp.Send($msg)
      $att.Dispose()

  3. Сергей Попов говорит:

    Хорошо бы ещё добавить куда подкидывать данные для авторизации.

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

Войти с помощью: 

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

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.