2013-01-11 71 views
1

我使用django后端发送电子邮件(但在这种情况下确实是django是无效的),我可以通过独立客户端登录,但不能通过smtplib登录。我不断收到:尽管凭证很好,Smtplib返回身份验证失败

SMTPAuthenticationError (535, '5.7.0 authentication failed') 

回答

1

在我的情况看来,服务器谎称其回应下面就打招呼请求字符串:

>>> 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