Отправка почты через Powershell

Allsoft

PowerShell — расширяемое средство автоматизации от Microsoft, позволяет выполнять различные сценарии из оболочки с интерфейсом командной строки.

Обычно для тестирования серверов электронно почты используют telnet, но это лишь проверяет что порт отвечает, но не проверяет отправку электронно почты.

Отправка электронной почты через Powershell

для отправки электронной почты необходимо сформировать несколько переменных

$fromaddress - Адрес получателя
$toaddress - Адрес отправителя
$Subject - Тема письма
$body - Тело письма
$smtpserver - SMTP-сервер

Пример скрипта отправки

$EmailTo = "[email protected]"
$EmailFrom = "[email protected]"
$Subject = "Test"
$Body = "Test Body"
$SMTPServer = "smtp.example.com"
$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("username", "password");
$SMTPClient.Send($SMTPMessage)

Отправка почты через SSL подключение

Если сервер поддерживает или требует (к примеру Gmail) отправку с использование шифрования, то необходимо параметр EnableSsl.SMTPClient установить в истину (true)

Пример скрипта

$EmailTo = "[email protected]"
$EmailFrom = "[email protected]"
$Subject = "Test"
$Body = "Test Body"
$SMTPServer = "smtp.example.com"
$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("username", "password");
$SMTPClient.Send($SMTPMessage)

Отправка электронной почты с вложением Powershell

Powershell позволяет так же отправлять вложения, при отправке электронной почты

для этого добавить переменную $attachment, содержащую путь до файла, с соответствующей обработкой

$EmailTo = "[email protected]"
$EmailFrom = "[email protected]"
$Subject = "Test"
$Body = "Test Body"
$SMTPServer = "smtp.example.com"
$attachment = "C:\temp\test.rar"
$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)
$attachment = New-Object System.Net.Mail.Attachment($filenameAndPath)
$SMTPMessage.Attachments.Add($attachment)
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("username", "password");
$SMTPClient.Send($SMTPMessage)

Отправка тела письма в формате HTML из файла в Powershell

Тело письма можно подготовить заранее и использовать его в различных тестах.

Добавим параметр

$body = get-content "C:\temp\content.html"

И опцию message.IsBodyHtml, которая указывает что тело письма в формате HTML.
Пример скрипта:

$EmailTo = "[email protected]"
$EmailFrom = "[email protected]"
$Subject = "Test"
$Body = "Test Body"
$SMTPServer = "smtp.example.com"
$body = get-content "C:\temp\content.html"
$message = new-object System.Net.Mail.MailMessage
$message.From = $fromaddress
$message.To.Add($toaddress)
$message.IsBodyHtml = $True
$message.Subject = $Subject
$message.body = $body
$smtp = new-object Net.Mail.SmtpClient($smtpserver)
$smtp.Send($message)
Добавить комментарий