发送邮件后我没有得到正确的输出

After sending mail I am not getting the correct output

我需要有关 Send-MailMessage 使用 PowerShell 的帮助。 问题是我可以通过 cmdlet 发送邮件,但发送后我想检查邮件是否已成功发送。所以我为此使用了 if/else 语句。在 运行 脚本之后,我在收件箱中收到邮件,但 PowerShell Write-Host 显示:

Mail delivery failed... Try Again

以下代码供参考:

$Status = Send-MailMessage -To $to -From $from -Bcc $bcc -Credential 'xxx@gmail.com' -Subject $subject -Body $Body -Attachments $attachment -SmtpServer $server -Port 587 -UseSsl
if ($Status -eq "true" -or $Status -eq "True" -or $Status -eq 0 -or $Status -eq 1) {
    Write-Host "Mail sent...."
} else {
    Write-Host "Mail delivery failed... Try Again"
}

如有疑问,请阅读 documentation:

Outputs

None

This cmdlet does not generate any output.

该 cmdlet 不生成输出,因此 $Status 为空,既不等于 "true" 也不等于 "True" 也不等于 0 也不等于 1,因此您的比较结果始终为假。

Send-MailMessage 无法提交消息时会报错,可以这样处理:

try {
    Send-MailMessage ...
    Write-Host "Mail sent...."
} catch {
    Write-Host "Mail delivery failed... Try Again"
}

附带说明一下,您只能验证邮件是否已成功提交(即您指定的邮件服务器是否已接受投递)。电子邮件是一种存储转发架构,这意味着接受邮件进行传递的一个跃点与邮件是否已到达最终收件人无关。电子邮件使用所谓的 bounce messages 将传递状态反馈给发件人。