使用send-mailmessage命令时的电子邮件凭据

时间:2014-04-01 12:18:23

标签: email batch-file powershell command powershell-v2.0

我搜索了很多论坛,他们确实解释了如何做到这一点,但技术语言太难理解,因为我对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' 

4 个答案:

答案 0 :(得分:5)

$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

答案 1 :(得分: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"))'

我建议以更安全的格式存储用户名/密码,但这应该可以解决问题。

答案 2 :(得分:0)

我不确定您是否可以使用send-mailmessage命令进行SMTP身份验证。但是,您可以通过SMTP服务器发送消息,该服务器需要使用Net.Mail.SmtpClient对象和System.Net.Mail.MailMessage对象进行身份验证。请参阅How to pass credentials to the Send-MailMessage command for sending emails以获取一个好例子。

答案 3 :(得分:0)

查看send-mailmessage helppage

的最后一个例子

你会看到你可以通过参数-credential domain01\admin01

传递凭证

如果您不想要任何提示,请查看此处Using PowerShell credentials without being prompted for a password