在 VSTS 中使用 Powershell 通过 GMAIL 发送电子邮件

Sending email via GMAIL using Powershell in VSTS

我想在 VSTS 发布结束时发送一封包含一些额外数据的电子邮件。我正在使用 powershell 发布任务并使用 Gmail SMTP 服务器。 powershell脚本如下:

$b = Invoke-WebRequest "http://mywebsite" -usebasicparsing
$message = New-Object System.Net.Mail.MailMessage
$message.subject =  "Swagger"
$message.body = $b
$message.to.add("me@hotmail.com")
$message.from = "source@gmail.com"
$smtp = New-Object System.Net.Mail.SmtpClient("smtp.gmail.com", "587");
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, "apppassword");
$smtp.send($message)

由于我使用的是 2 因素身份验证,因此我在上面的代码中使用了应用程序密码。当我从我的本地机器 运行 它时,这工作正常。但是,作为发布过程的一部分,它给了我以下错误:

"The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required"

谁能指出我正确的方向?谢谢!

你能试试这个吗:

$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"
$Username = "username@gmail.com"
$Password = "password"
$to = "username_to_send@gmail.com"
#$cc = "username@gmail.com"
$subject = "Email Subject"
$body = "Insert body text here"
#$attachment = "C:\attachedFile.txt"
$message = New-Object System.Net.Mail.MailMessage
$message.subject = $subject
$message.body = $body
$message.to.add($to)
#$message.cc.add($cc)
$message.from = $username
#$message.attachments.add($attachment)
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
$smtp.send($message)
write-host "Mail Sent successfully using GMAIL"