我有一个大问题。对于一个学校俱乐部,我必须编写一个自动发送电子邮件的脚本。我决定为此使用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
你知道出什么问题吗?
答案 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)