Отправка SMTP сообщения

Windows PowerShell — расширяемое средство автоматизации от Microsoft, состоящее из оболочки с интерфейсом командной строки и сопутствующего языка сценариев.
Отличная замена командной строке. Возможности просто безграничные.


Модератор: UncleFather

Аватара пользователя
UncleFather
Site Admin
Сообщения: 1505
Зарегистрирован: 17 авг 2004 16:20, Вт
Контактная информация:

Отправка SMTP сообщения

Сообщение UncleFather »

Пример PowerShell скрипта для отправки почты (SMTP сообщения):

Код: Выделить всё

$ConstServer = "smtp.server.ru"                                 #SMTP сервер
$ConstSMTPPort = "25"                                           #Порт SMTP сервера
$ConstFrom = "sender@server.ru"                                 #Адрес отправителя
$ConstTo = "receiver@server.ru"                                 #Адрес получателя
$ConstMessageTypeHTML = $false                                  #Формат сообщения HTML (true) или обычный текст (false)
$ConstUserName = "sender@server.ru"                             #Имя пользователя (ящика) для авторизации на SMTP сервере
$ConstUserPass = "MyPassword"                                   #Пароль для авторизации на SMTP сервере
$ConstMessageSubject = "Subject"                                #Тема сообщения
$ConstMessageBody = "Body"                                      #Тело сообщения
$SourceFile="C:\Soft\Attachment.txt"                            #Прикрепляемый файл

#Создаем необходимые объекты и задаем переменные, необходимые для отправки и формирования SMTP сообщения:
    $SmtpClient = New-Object System.Net.Mail.SmtpClient 
    $Message = New-Object System.Net.Mail.MailMessage 
    $SmtpClient.Host = $ConstServer
    $SmtpClient.Port = $ConstSMTPPort
    $Message.From = $ConstFrom
    $Message.To.Add($ConstTo)
    $Message.BodyEncoding = [System.Text.Encoding]::UTF8
    $Message.SubjectEncoding = [System.Text.Encoding]::UTF8
    $Message.IsBodyHtml = $ConstMessageTypeHTML
    $Message.Subject = $ConstMessageSubject
    $SmtpClient.Credentials= New-Object System.Net.NetworkCredential($ConstUserName , $ConstUserPass)
    $Message.Attachments.Add($SourceFile)
    $Message.Body = (get-date).ToString() + $ConstMessageBody
    $SmtpClient.Send($Message) #Отправляем SMTP сообщение
    if ($?) { # Если SMTP сообщение было отправлено успешно, то
       write-host "Сообщение успешно отправлено"
    } else { #Если SMTP сообщение не удалось отправить, то 
       write-host "Сообщение не отправлено. Ошибка:" $Error[0].ToString()
    }
    $Message.Dispose() #Отправляем сообщение QUIT на SMTP-сервер (правильно завершаем TCP-подключение и освобождаем все ресурсы, используемые текущим экземпляром класса SmtpClient)
}

Alexander A. Manaeff©

Понравилась статья? Будем крайне признательны за репосты в соцсетях! Материально поддержать проект можно здесь

Мои странички:
ВКонтакте
Одноклассники
Youtube
Facebook
Instagram

Изображение
Изображение
Изображение
Изображение