在PowerShell上的Send-MailMessage不起作用

时间:2019-01-10 18:37:44

标签: powershell email

我有一个大问题。对于一个学校俱乐部,我必须编写一个自动发送电子邮件的脚本。我决定为此使用PowerShell。

我的代码:

Send-MailMessage –To "email@outlook.com" –Subject "Test E-Mail" –Body "FIRST EMAIL WITH POWERSHELL" –SmtpServer "smtp.gmail.com" –From "email@gmail.com"

我的错误代码:

  

Send-MailMessage:SMTP服务器需要安全连接,或者客户端尚未通过身份验证。服务器响应为:   5.7.0必须首先发出STARTTLS命令。 o3sm51888528wrs.30-gsmtp   内联:1个字符:1   + Send-MailMessage-至“ email@outlook.com”主题“测试电子邮件” -Bod ...   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~       + CategoryInfo:InvalidOperation:(System.Net.Mail.SmtpClient:SmtpClient)[Send-MailMessage],SmtpException       + FullyQualifiedErrorId:SmtpException,Microsoft.PowerShell.Commands.SendMailMessage

如果我写

–SmtpServer "gsmtp.gmail.com"

错误代码是:

  

Send-MailMessage:无法建立与远程服务器的连接。   行数:1字符数:1   + Send-MailMessage-至“ email@outlook.com”; -主题“测试电子邮件”; -董事会。 。   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~   + CategoryInfo:InvalidOperation :(系统.Net。邮件.SmtpClient:SmtpClient)[Send-MailMessage],SmtpException   + FullyQualifiedErrorId:SmtpException,Microsoft。电源外壳。命令。 SendMailMessage

你知道出什么问题吗?

1 个答案:

答案 0 :(得分:3)

首先,您需要在Google帐户设置中启用“安全性较低的应用”。 为此,请点击以下链接,然后将允许不太安全的应用设置设置为打开

完成后,您可以使用$MyEmail = "email@gmail.com" $creds = get-credential -Message 'Enter your email credentials' -Username $MyEmail $ServerParams = @{ SmtpServer = "smtp.gmail.com" From = $MyEmail Port = 587 UseSsl = $true Credential = $creds } $MessageParams = @{ 'To' = "email@outlook.com" 'Subject' = "Test E-Mail" 'Body' = "FIRST EMAIL WITH POWERSHELL" } Send-MailMessage @ServerParams @MessageParams 发送消息。这是一个可行的示例。

{{1}}

奖金:为了获得更好的可读性和可重用性,您可以使用参数

(参考:About Splatting