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

标签 python django smtp smtplib

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

SMTPAuthenticationError (535, '5.7.0 authentication failed')

最佳答案

在我的例子中,服务器似乎撒谎了,它在 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 .

关于python - 尽管凭据良好,Smtplib 仍返回身份验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14276653/

相关文章:

python - Django 在部署到 Elastic Beanstalk 时看不到环境变量

r - 将 gvis 对象(存储为 HTML 的图像)嵌入到 mailR - R 中

windows - 如何在 Windows 7 上设置 SMTP 服务器

python - 图例中带有线和点标记的两个图共享相同的标签

Python 程序重命名文件名,如果已经存在该文件则覆盖

python - 所有任务的单个工作线程还是多个特定的工作线程?

email - 不支持使用 SMTP 和 TLS 从 Sonar 发送邮件?

python - 在类里面创建列表的更好方法?

python - 带有普通 Django 表单和 Bootstrap 的 Django-CKEditor

python - 特殊事件的 django 模型字段更新