Email 在powershell中创建多行电子邮件正文
当我试图实现多行电子邮件正文时,我不断地遇到错误。我怀疑语法有问题。在网上找不到任何示例。有什么建议吗 错误:Email 在powershell中创建多行电子邮件正文,email,powershell,Email,Powershell,当我试图实现多行电子邮件正文时,我不断地遇到错误。我怀疑语法有问题。在网上找不到任何示例。有什么建议吗 错误:表达式或语句中$AccountExpire“]的意外标记“EmployeeName”]。 $subject = "Email for $item["EmployeeName"]. Date expire $AccountExpire" $body=@" Name: $item["Employee"] Class: Contract
表达式或语句中$AccountExpire“]的意外标记“EmployeeName”]。
$subject = "Email for $item["EmployeeName"]. Date expire $AccountExpire"
$body=@"
Name: $item["Employee"]
Class: Contractor
Depart: $item["Depart"]
Region: $item["Region"]
Manager: $item["Manager"]
New Date: $NewDate
"@
SendUpdateEmail($subject,$Body)
您需要使用子表达式(
$()
)转义这些数组索引操作:
多行字符串(或这里的字符串,正式名称)也是如此:
就个人而言,我会选择多行模板,并使用
-f
格式运算符来填充值:
$bodyTemplate=@'
Name: {0}
Class: Contractor
Depart: {1}
Region: {2}
Manager: {3}
New Date: {4}
'@
$body = $bodyTemplate -f $item["Employee"],$item["Depart"],$item["Region"],$item["Manager"],$NewDate
使用-f
时,还可以格式化不同类型的数据,因此如果$NewDate
是[DateTime]
对象,则可以在模板内控制该对象的格式化,例如:
@'
Date: {0:HH:mm:ss}
'@ -f (Get-Date)
这将产生:
Date: 14:55:09
(假设您在下午五点到三点的时候这样做)您得到的错误是什么。
$item
在哪里定义?我猜是来自csv文件和循环?这些变量可能无法在here字符串中正确展开。请尝试对字段名使用单引号,而不是双引号,如['EmployeeName']
@MathiasR.Jessen。。。。很抱歉那太傻了。是语法突出显示搞乱了我。@Matt是的,prettify不能很好地识别PowerShell转义序列;)我尝试了第一种方法,但仍然在$body=@“行中获取错误,并声明它缺少终止符”@,但这不是真的。请确保开头的@“
是其行中的最后一项,并确保结尾的“@
是其行中的第一项。开盘后或收盘前,各自线路上没有空格或任何内容。顺便说一句,我在每天发送数千封电子邮件的生产脚本中使用选项2和{0}
和-f
(非常适合将内容注入格式良好的HTML电子邮件正文!)。它工作得很好!花了几个小时后,我了解到,在声明此项之前,您不能有任何选项卡空间或常规空间,否则会出现一些严重错误。谢谢马蒂亚斯的帮助。成功了。
@'
Date: {0:HH:mm:ss}
'@ -f (Get-Date)
Date: 14:55:09