使用 send-mailmessage 命令时的电子邮件凭据
Posted
技术标签:
【中文标题】使用 send-mailmessage 命令时的电子邮件凭据【英文标题】:Email credentials when using send-mailmessage command 【发布时间】:2014-05-12 05:11:13 【问题描述】:我搜索了很多论坛,他们确实解释了如何做到这一点,但是技术语言太难理解了,因为我对 powershell 还很陌生。我希望逐步向我解释这一点(婴儿步骤)。我想在批处理文件 (.bat) 中运行这个 powershell 命令。我有一个批处理文件,它每周进行 robocopy 备份,我希望批处理文件在备份完成后向我发送一封电子邮件。我唯一的问题是凭据,我收到一个弹出框,要求输入用户名和密码。当我输入此信息时,电子邮件将成功发送。这是我所拥有的;
使用:powershell V2.0 Windows 7 Ultimate
Powershell -command send-mailmessage -to emailadress@provider.com -from emailaddress@provider.com -smtp smtp.broadband.provider.com -usessl -subject 'backup complete'
【问题讨论】:
【参考方案1】:$from = "example@mail.com"
$to = "example@mail.com"
$smtp = "smtpAddress.com"
$sub = "hi"
$body = "test mail"
$secpasswd = ConvertTo-SecureString "yourpassword" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential($from, $secpasswd)
Send-MailMessage -To $to -From $from -Subject $sub -Body $body -Credential $mycreds -SmtpServer $smtp -DeliveryNotificationOption Never -BodyAshtml
【讨论】:
【参考方案2】:您可以在同一命令中传递凭证对象 - 这将避免弹出:
Powershell -Command 'Send-MailMessage -to "emailadress@provider.com" -from "emailaddress@provider.com" -smtp "smtp.broadband.provider.com" -usessl -subject "backup complete" -credential (new-object System.Net.NetworkCredential("user","pass","domain"))'
我建议以更安全的格式存储用户名/密码,但这应该可以解决问题。
【讨论】:
【参考方案3】:我不确定您是否可以使用 send-mailmessage 命令进行 SMTP 身份验证。但是,您可以通过需要使用 Net.Mail.SmtpClient 对象和 System.Net.Mail.MailMessage 对象进行身份验证的 SMTP 服务器发送消息。请参阅 How to pass credentials to the Send-MailMessage command for sending emails 了解一个很好的例子。
【讨论】:
【参考方案4】:看send-mailmessage helppage的最后一个例子
你会看到你可以通过参数-credential domain01\admin01
传递凭证
如果您不想要任何提示,请看这里Using PowerShell credentials without being prompted for a password(将您的信用保存在文本文件中)
【讨论】:
以上是关于使用 send-mailmessage 命令时的电子邮件凭据的主要内容,如果未能解决你的问题,请参考以下文章
Powershell管理系列(三十四)PowerShell操作之Send-MailMessage
使用 PowerShell V2 的 Send-MailMessage 通过 Gmail 发送邮件