PowerShell — расширяемое средство автоматизации от Microsoft, позволяет выполнять различные сценарии из оболочки с интерфейсом командной строки.
Обычно для тестирования серверов электронно почты используют telnet, но это лишь проверяет что порт отвечает, но не проверяет отправку электронно почты.
Отправка электронной почты через Powershell
для отправки электронной почты необходимо сформировать несколько переменных
- $fromaddress - Адрес получателя
- $toaddress - Адрес отправителя
- $Subject - Тема письма
- $body - Тело письма
- $smtpserver - SMTP-сервер
Пример скрипта отправки
1 2 3 4 5 6 7 8 9 | $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)
Пример скрипта
1 2 3 4 5 6 7 8 9 10 | $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, содержащую путь до файла, с соответствующей обработкой
1 2 3 4 5 6 7 8 9 10 11 12 | $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.
Пример скрипта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $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) |