【发布时间】:2020-12-15 17:25:31
【问题描述】:
我有一个包含几列的 *.csv 文件,我想使用 UsersTo 和 UsersCc 用户列表来发送消息。 问题在于 $CcAddress 因为我有多个电子邮件地址,一旦我格式化它们,我会得到以下信息: 错误: Send-MailMessage : 在邮件标头中发现无效字符:','。 在 C:\Discovery Scan Process\RSU 通知\Notifications.ps1:43 char:2
- Send-MailMessage -Encoding UTF32 -to $ToAddress -Cc $CcAddress -from $FromAddre ...
-
+ CategoryInfo : InvalidType: (:) [Send-MailMessage], FormatException + FullyQualifiedErrorId : FormatException,Microsoft.PowerShell.Commands.SendMailMessage
CSV 看起来像这样:
UsersTo,UsersCc,Domain
unknowTest.Test@test.com,"testOpen@new.com,Pvo.ovi@new.com",test.test
unknowNew.test@test.com,"testOpen@new.com,testOpen@new.com",new.test
unknowprod.mx@test.com,"testOpen@new.com,Evo.x@new.com",prod.test
unknowX.SS@test.com,"testOpen@new.com,Spekor1.@new.com",uat.test
代码:
$notificaitonList = import-csv .\'listOfUsers - Copy.csv'
$domains = 'test.test','prod.test'
foreach ($domain in $domains){
$FromAddress = "some@address"
$ToAddress = ($notificaitonList | Where-Object {$_.domain -like $domain}).UsersTo | foreach {"`"$_`""}
$Ccstr = (($notificaitonList | Where-Object {$_.domain -like "$domain"}).UsersCc).split(",")
$Ccstr = $Ccstr | foreach {"`"$_`""}
[string[]]$CcAddress= $Ccstr.Split(",") | foreach {"`"$_`""}
[string] $MessageSubject = "MessageSubject "
[string] $emailbody = "emailbody"
$SendingServer = "server"
Send-MailMessage -Encoding UTF32 -to $ToAddress -Cc $CcAddress -from $FromAddress -subject $MessageSubject -smtpServer $SendingServer -body $emailbody
}
【问题讨论】:
-
如果 cc 有多个值,那么就按原样发送,不要拆分。
-
谢谢 Doung,不幸的是,CC 接受多个地址不必一定是特定格式。示例: "testOpen@new.com,Pvo.ovi@new.com" -- 不起作用 "testOpen@new.com","Pvo.ovi@new.com" -- 会起作用。我能想到的让它看起来正确的唯一方法是拆分它。
-
哦,我明白了,感谢您的澄清。
标签: arrays powershell scripting powershell-3.0 windows-scripting