headermask image

Отправка SMTP сообщений с помощью PowerShell. Часть 3

В предыдущей статье мы рассмотрели, как добавить тело письма в скрипт Powershell. В этой статье мы пойдем немного дальше и добавим в тело письма HTML содержимое..

Для этого мы будем использовать объект .Net – System.Net.Mail.MailMessage. Данный объект может быть использован через объект SmtpClient, который рассмотрен нами в предыдущих частях этой серии статей. Его основным преимуществом является то, что мы можем использовать данный объект в скрипте для создания почтового сообщения в формате HTML.

В начале используем переменные, уже знакомые нам по предыдущим статьям.

$smtpServer = "ho-ex2010-caht1.exchangeserverpro.net"
$smtpFrom = "reports@exchangeserverpro.net"
$smtpTo = "administrator@exchangeserverpro.net"
$messageSubject = "List of Exchange Servers"

Создаем новый объект MailMessage используя объявленные переменные.

$message = New-Object System.Net.Mail.MailMessage $smtpfrom, $smtpto
$message.Subject = $messageSubject

Теперь самая важная часть – устанавливаем тело письма в HTML.

$message.IsBodyHTML = $true

Далее нам необходимо получить какое то содержимое HTML для вставки в тело письма. В качестве примера вставим список серверов Exchange с указанием ролей серверов.

 

$message.Body = Get-ExchangeServer | Select-Object Name,ServerRole | ConvertTo-Html

В данном пример мы получаем список серверов командлетом Get-ExchangeServer, выдераем из вывода только имя сервера и роль, далее конвертируем вывод в HTML командлетом ConvertTo-Html.

Заключительным шагом является создание объекта SmtpClient и отправка сообщения.

$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($message)

В результате вы получите примерно следующее письмо:

powershell-send-html-email

Собираем все команды вместе и получаем следующий скрипт.

$smtpServer = "ho-ex2010-caht1.exchangeserverpro.net"
$smtpFrom = "reports@exchangeserverpro.net"
$smtpTo = "administrator@exchangeserverpro.net"
$messageSubject = "List of Exchange Servers"

$message = New-Object System.Net.Mail.MailMessage $smtpfrom, $smtpto
$message.Subject = $messageSubject
$message.IsBodyHTML = $true

$message.Body = Get-ExchangeServer | Select-Object Name,ServerRole | ConvertTo-Html

$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($message)

Как вы можете видеть все довольно просто и удобно.

 

 

Полезная информация

Поставил себе наконец оконные откосы. Пластиковые откосы для окон рекомендую заказывать в компании "КомБиг".

Print This Post Print This Post
Похожие посты
  • Отправка SMTP сообщений с помощью PowerShell. Часть 1
  • Отправка SMTP сообщений с помощью PowerShell. Часть 4
  • Отправка SMTP сообщений с помощью PowerShell. Часть 2
  • Как узнать установленную версию Powershell
  • Работа в режиме хостинга Exchange 2010 SP1. Часть 4 – получение и отправка почты
  • Удаленное подключение к Exchange 2010 с помощью Powershell…
  • PowerShell Plus for Free
  • Обновляем старые скрипты на их PowerShell аналоги
  • На следующей неделе 2 веб-трансляции Microsoft
  • Настройка уникального имени для SMTP баннера каждого коннектора получения в Exchange Server
  • 2 комментов оставлено (Add 1 more)

    1. Раньше то не было этого командлета.

      1. Pavel Nagaev on October 12th, 2012 at 7:52 pm
    2. Перестаньте изобретать велосипеды. Для всего вышеописанного есть командлет Send-MailMessage, а для отправки в виде html параметр -BodyAsHtml.

      2. Serg on October 2nd, 2012 at 4:50 pm