sid*_*idx 0 smtp exception-handling amazon-web-services pyramid
我正在使用 pyramid_exclog 记录异常并将这些异常作为电子邮件发送。我正在使用 Amazon aws SMTP 发送电子邮件。但我收到以下错误:
SMTPAuthenticationError: (530, 'Must issue a STARTTLS command first')
Run Code Online (Sandbox Code Playgroud)
这是我使用的代码:
[handler_email_exc_handler]
class = handlers.SMTPHandler
args = (('email-smtp.us-east-1.amazonaws.com', 587), 'no-reply@company.com', ['me@company.com'], 'Company Exception' ,('<username>','<user_key>'),None)
level = ERROR
formatter = exc_formatter
Run Code Online (Sandbox Code Playgroud)
据我所知,aws 凭据没有任何问题,因为我使用它们通过 Thunderbird 发送邮件。
它不是凭据,至少不是根据此错误消息。您正在尝试在不使用 TLS 的情况下将 SMTP 与 SES 对话——您正在尝试通过未加密的连接对自己进行身份验证。这并不安全,因为它可能会导致您的凭据遭到破坏,因此不受支持。
Amazon SES SMTP 终端节点要求使用传输层安全性 (TLS) 对所有连接进行加密。(请注意,TLS 通常以其前身协议的名称 SSL 来指代。)Amazon SES 支持两种建立 TLS 加密连接的机制:STARTTLS 和 TLS Wrapper。检查您的软件的文档以确定它是否支持 STARTTLS、TLS Wrapper 或两者。
如果您的软件不支持 STARTTLS 或 TLS Wrapper,您可以使用开源 stunnel 程序设置加密连接(称为“安全隧道”),然后使用安全隧道连接到 Amazon SES SMTP 终端节点。
http://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-connect.html
我不是 Python 人,但对 Google 机器的快速检查表明:
要指定使用安全协议 (TLS),请将元组传递给安全参数。这仅在提供身份验证凭据时使用。元组应该是一个空元组,或者一个带有密钥文件名称的单值元组,或者一个带有密钥文件和证书文件名称的 2 值元组。(这个元组被传递给 smtplib.SMTP.starttls() 方法。)
啊哈,它甚至提到了“惊吓”。
如果我找到了正确的参考,也许您的最后一个参数应该是()而不是None,因为您不应该需要密钥文件或证书文件。
| 归档时间: |
|
| 查看次数: |
2628 次 |
| 最近记录: |