Django邮件SMTPlib身份验证方法问题
我正在尝试使用 Django 和我客户的 smtp 服务器发送电子邮件。 该服务器仅支持 AUTH LOGIN 命令。
默认情况下(据我使用wireshark所见)django发送此位:
250-AUTH=LOGIN CRAM-MD5 PLAIN
作为电子邮件的一部分。
我已将其跟踪到 /usr/lib/python/smtplib.py:569 ,它在其中选择身份验证方法(有一个 AUTH_LOGIN 选项,这就是我想要的)。
据我所知,我无法使用 settings.py 中的变量设置身份验证方法(http://docs.djangoproject.com/en/dev/topics/email/)
有谁知道我如何告诉 Django 使用auth_login 而不是 auth_cram_md5?
I am trying to send an email using Django and my client's smtp server.
That server supports AUTH LOGIN commands only.
By default (as far as i can see using wireshark) django sends this bit:
250-AUTH=LOGIN CRAM-MD5 PLAIN
as part of the email message.
I have tracked that to /usr/lib/python/smtplib.py:569 where it chooses the authentication method (there's an option for AUTH_LOGIN which is what i want).
As far as i can see i can't set the auth method using vars in settings.py (http://docs.djangoproject.com/en/dev/topics/email/)
Does anyone know how i can tell Django to use auth_login instead of auth_cram_md5?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我找到了一种方法来告诉 smtplib 使用一种特定的身份验证机制(归功于 Python 的 SMTP AUTH 扩展问题)。下面的代码行允许您向 smtplib 建议身份验证机制,忽略服务器提供的其他机制(例如 CRAM-MD5 DIGEST-MD5):
在许多教程中发现的另一个常见错误是,当使用
.starttls()< /code>,需要发送
server.ehlo()
两次,一次在.starttls()
之前,一次在.starttls()
之后。这是对我有用的代码:
此代码仅使用 Python 2.7.9 进行了测试(而不是专门使用 Django)。希望它能帮助一些人。
I found a way to tell smtplib to use one specific authentication mechanism (credit goes to SMTP AUTH extension trouble with Python). The following line of code allows you to suggest authentication mechanisms to smtplib, ignoring other mechanisms offered by the server (e.g. CRAM-MD5 DIGEST-MD5):
Another common mistake found on many tutorials is that when using
.starttls()
, one needs to send theserver.ehlo()
twice, once before and once after the.starttls()
.Here is the code which worked for me:
This code was only tested with Python 2.7.9 (and not specifically with Django). Hope it helps some people.