1

我使用 django 后端发送电子邮件(但实际上 django 在这种情况下是无关紧要的),我可以通过独立客户端登录,但不能通过 smtplib。我不断得到:

SMTPAuthenticationError (535, '5.7.0 authentication failed')
4

1 回答 1

1

在我的情况下,服务器似乎在撒谎,它在 hello 请求中响应了以下字符串:

>>> conn.ehlo()
(250,
'edited.host.name Hello host.name [83.24.32.123], pleased to meet you\nENHANCEDSTATUSCODES\nPIPELINING\n8BITMIME\nSIZE\nDSN\nETRN\nAUTH GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN\nDELIVERBY\nHELP')

它在其中宣布它支持CRAM-MD5身份验证方法,但它没有。

由于我很着急,用管理员解决这个问题最终会错过最后期限,我不得不修补 SMTP 类以更喜欢PLAIN身份验证方法。为此,您需要创建子类SMTP_SSL并覆盖login方法,只需从 SMTP 类中复制login更改一行。

换行说:

preferred_auths = [AUTH_CRAM_MD5, AUTH_PLAIN, AUTH_LOGIN]

到:

preferred_auths = [AUTH_PLAIN, AUTH_LOGIN]

无论如何,我发布了修补类: http: //pastebin.com/ecL9A3P4

于 2013-01-11T10:56:29.510 回答