PowerShell 上的 Send-MailMessage 不起作用

Jan*_*anF 2 email powershell

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

我的代码:

Send-MailMessage –To "email@outlook.com" –Subject "Test E-Mail" –Body "FIRST EMAIL WITH POWERSHELL" –SmtpServer "smtp.gmail.com" –From "email@gmail.com"
Run Code Online (Sandbox Code Playgroud)

我的错误代码:

Send-MailMessage:SMTP 服务器需要安全连接或客户端尚未通过身份验证。服务器响应为:5.7.0 必须首先发出 STARTTLS 命令。o3sm51888528wrs.30 - gsmtp In line: 1 character: 1 + Send-MailMessage -To "email@outlook.com" 主题 "Test E-Mail" -Bod ... + ~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (System.Net .Mail.SmtpClient: SmtpClient) [Send-MailMessage], SmtpException +fullyQualifiedErrorId: SmtpException, Microsoft.PowerShell.Commands.SendMailMessage

如果我写

–SmtpServer "gsmtp.gmail.com"
Run Code Online (Sandbox Code Playgroud)

错误代码是:

Send-MailMessage : 无法建立到远程服务器的连接。In line:1 character:1 + Send-MailMessage -To "email@outlook.com"; - 主题“测试电子邮件”;- 博德。. . + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage], SmtpException +fullyQualifiedErrorId : SmtpException,Microsoft. 电源外壳。命令。发送邮件消息

你知道是什么问题吗?

Sag*_*pre 5

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

完成此操作后,您可以使用 发送您的消息Send-MailMessage。这是一个工作示例。

$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
Run Code Online (Sandbox Code Playgroud)

奖励:为了更好的可读性和可重用性,您可以设置参数

(参考:关于喷溅