Как закрасить конкретное значение переменной в теле письма в сценарии powershell - PullRequest
0 голосов
/ 08 сентября 2018

Я использую следующий скрипт Powershell для отправки почты

$smtpServer ="111.11.1.1.11"
$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$msg=new-object Net.Mail.MailMessage
$msg.From="noreply@x.com"
$msg.To.Add("x@x.com")
$Success  = $passed/$total*100;
$Failed = $Total- $Passed;
$msg.Subject = "BVT On Build"+$Buildno+",Total :"+ $Total+"  Passed :"+ 
$Passed+"  Failed :"+$Failed+"" #$subject
$msg.Body = "This is an autogenerated mail from  VM - Total Tests Run 
:"+$Total+" `n`n Total Tests Passed :"+ $Passed+" `n`n Pass Percentage 
:"+$Success+" `n`n Failed test cases 'n'n"+$Failed+""
$smtp.Send($msg)

Мое требование здесь состоит в том, чтобы закрасить конкретное значение переменной (например: $ Failed in $ msg.Body) в теле письма. Как я могу добиться этого? Не могли бы вы помочь

Я знаю следующий метод, но он используется только в write-host Write-Host $myVariable -ForegroundColor 'Red'

Мой вывод должен быть таким Это автоматически сгенерированная почта от ВМ - Всего выполнено 12 тестов Всего тестов прошло: 6 Процент Pass: 50% Неудачные тесты: 6 (красным цветом)

1 Ответ

0 голосов
/ 08 сентября 2018

Вам нужно будет использовать HTML форматирование для раскраски элементов в теле письма. Простое IF/ELSE условное выражение для установки желаемого цвета. Также вы должны установить для свойства IsBodyHtml значение True, чтобы тело письма не было простым текстом.

$smtpServer ="111.11.1.1.11"
$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$msg=new-object Net.Mail.MailMessage
$msg.From="noreply@x.com"
$msg.To.Add("x@x.com")
$Success = $passed/$total*100

$SuccessFormatted  = if ($Success -ge 50){
                       '<font color="green">{0}</font>' -f $Success
                     }
                     else{
                       '<font color="red">{0}</font>' -f $Success
                     }

$Failed = $Total- $Passed;
$msg.Subject = "BVT On Build"+$Buildno+",Total :"+ $Total+"  Passed :"+ 
$Passed+"  Failed :"+$Failed+"" #$subject
$msg.Body = "This is an autogenerated mail from  VM - Total Tests Run 
:"+$Total+" `n`n Total Tests Passed :"+ $Passed+" `n`n Pass Percentage 
:"+$SuccessFormatted+" `n`n Failed test cases 'n'n"+$Failed+""

$msg.IsBodyHtml = $true

$smtp.Send($msg)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...