我有一个使用SMTP发送电子邮件的简单脚本。
$EmailFrom = "from@gmail.com"
$EmailTo = "to@gmail.com"
$Subject = "Reports"
$Body = "Please see attachments"
$SMTPServer = "smtp.gmail.com"
$SMTPClient = New-Object Net.Mail.SMTPClient($SMTPServer, 587)
$User = "from"
$PWord = ConvertTo-SecureString –String "Password" –AsPlainText -Force
$Credential = New-Object –TypeName "System.Management.Automation.PSCredential" –ArgumentList $User, $PWord
Send-MailMessage -SmtpServer $SMTPServer -Credential $Credential -From $EmailFrom -To $EmailTo -Subject $Subject我正面临一个使用-UseSsl的问题。
使用它,给我错误
发送邮件:服务器不支持安全连接。
不使用它,给我错误
Send: SMTP服务器需要安全连接,或者客户端未经身份验证。服务器响应是: 5.7.0必须首先发出STARTTLS命令。4sm4306203 Pav.33- gsmtp
发布于 2016-06-28 08:54:43
Net.Mail.SmtpClient和Send-MailMessage是实现同一目的的两种方式:从PowerShell发送邮件。但是,在示例代码中,SmtpClient语句只是创建一个客户机,而实际上没有对它做任何操作,而Send-MailMessage语句没有指定正确的端口(587),因此使用默认端口(25)。
来自文档
-Port 指定SMTP服务器上的备用端口。默认值为25,这是默认SMTP端口。此参数可在WindowsWindows3.0和更新版本中使用。
变化
...
$SMTPServer = "smtp.gmail.com"
$SMTPClient = New-Object Net.Mail.SMTPClient($SMTPServer, 587)
$User = "from"
$PWord = ConvertTo-SecureString –String "Password" –AsPlainText -Force
$Credential = New-Object –TypeName "System.Management.Automation.PSCredential" –ArgumentList $User, $PWord
Send-MailMessage -SmtpServer $SMTPServer -Credential $Credential -From $EmailFrom -To $EmailTo -Subject $Subject至
...
$SMTPServer = "smtp.gmail.com"
$User = "from"
$PWord = ConvertTo-SecureString –String "Password" –AsPlainText -Force
$Credential = New-Object –TypeName "System.Management.Automation.PSCredential" –ArgumentList $User, $PWord
Send-MailMessage -SmtpServer $SMTPServer -Port 587 -UseSsl -Credential $Credential -From $EmailFrom -To $EmailTo -Subject $Subject你的代码应该能用。
https://stackoverflow.com/questions/38069088
复制相似问题