powershell - 如何在PowerShell脚本中为电子邮件正文中的特定变量值着色
问题描述
我正在使用以下 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 $myVariable -ForegroundColor 'Red'
我的输出应该是这样的 这是来自 VM 的自动生成的邮件 - 运行总测试 12 总测试通过:6 通过百分比:50% 失败的测试用例:6(红色)
解决方案
您将需要使用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)
推荐阅读
- ubuntu - geth 使用智能合约备份/恢复添加到区块链的数据
- android-cts - 面临 CTS 错误
- jquery - 一个选项卡的内容未正确显示
- http - 如何在 go fasthttp 中添加自定义 http 标头?
- ruby - 如何在类之外使用 Minitest 断言?
- android - 如何将 Firebase RealtimeDatabase 和 FCM 放在一起
- html - 如何在 css 中将块与 flex 垂直对齐,以便响应
- node.js - 如何从 Influxdb 的 NodeJS API 中获取 ReactJS 中的数据?
- ruby-on-rails - 期望 <"categories/new"> 但使用 <[]> 呈现的控制器测试错误
- node.js - 在只读模式下忽略 Mongoose 架构