尽管凭据良好,但Smtplib仍会返回身份验证失败

时间:2013-01-11 10:56:30

标签: python django smtp smtplib

我使用django后端发送电子邮件(但在这种情况下真的django是无效的),我可以通过独立客户端登录,但不能通过smtplib登录。我一直在说:

SMTPAuthenticationError (535, '5.7.0 authentication failed')

1 个答案:

答案 0 :(得分: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