我使用django后端发送电子邮件(但在这种情况下真的django是无效的),我可以通过独立客户端登录,但不能通过smtplib登录。我一直在说:
SMTPAuthenticationError (535, '5.7.0 authentication failed')
答案 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。