我一直在使用下面的脚本发送电子邮件,有时它有效,有时无效。我不确定为什么它是间歇性的,并出现这个错误:
">错误:SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器的响应是:需要身份验证";
这是我正在使用的脚本:
$AWS_ACCESS_KEY = "KEYYYYYYYYYY"
$AWS_SECRET_KEY = "SECRET_KEYYYYYYYYYYYYYY"
$SECURE_KEY = $(ConvertTo-SecureString -AsPlainText -String $AWS_SECRET_KEY -Force)
$creds = $(New-Object System.Management.Automation.PSCredential ($AWS_ACCESS_KEY, $SECURE_KEY))
$smtp = "email-smtp.us-east-1.amazonaws.com"
$from = "noreply@domain.com"
$to = "to_you@domain.com"
$bcc = "its_me@domain.com"
$subject = "Hello There"
$body = "Hey Friend!<br><br>"
$body += "Body<br><br>"
$body += "Regards,<br>"
$body += "Bye<br>"
#Sending email
Sleep 2
Send-MailMessage -From $from -To $to -Bcc $bcc -Subject $subject -Body $body -BodyAsHtml -SmtpServer $smtp -Credential $creds -UseSsl -Port 587
可能是什么问题?以前有人见过这个吗?我可以查看AWS控制台中的任何日志吗?
谢谢!
我也遇到了一个类似的问题,用下面的代码解决了这个问题。
$smtpServer = "email-smtp.us-east-1.amazonaws.com"
$smtpPort = 587
$username = "************"
$password = "***********************"
$from = "alerts@test.com"
$to = "recipient@domain.com"
$subject = "Amazon SES Test Email"
$body = "Body Amazon SES Test Email"
$cc = "xyz@domain.com"
$smtp = new-object Net.Mail.SmtpClient($smtpServer, $smtpPort)
$smtp.EnableSsl = $true
$smtp.Credentials = new-object Net.NetworkCredential($username, $password)
$msg = new-object Net.Mail.MailMessage
$msg.From = $from
$msg.To.Add($to)
$msg.CC.Add($cc)
$msg.Subject = $subject
$smtp.Send($msg)
$msg.Body = $body
这个错误的关键是它是间歇性的,并不是一直发生。来自SMTP服务器(SES(的确切响应给出了更详细的响应;
535 Signature Version 2从3月26日起不再推荐与SES一起使用,2021年。从那一天起,我们将逐步拒绝此类请求。若要解决此问题,必须迁移到Signature Version 4。如果你在SES控制台中创建了您的SMTP凭据,请新建证书并替换以前的证书。如果您正在派生签名IAM用户的版本2凭据,请开始使用签名版本4算法:https://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-credentials.html
简而言之,这意味着你应该重新生成一个新的AWS SES用户名/密码对,并在2021年之前停止使用凭据。