2016-08-22 76 views
0

我會遇到不同的設置(本地主機,生產系統)Django的SMTP庫一個奇怪的,可重複的問題:Django的SMTP庫產生錯誤的SMTP AUTH平原認證字符串

的權威性平原認證字符串是完全沒譜。這是蟒蛇控制檯返回: sys.version_info sys.version_info(major=3, minor=5, micro=0, releaselevel='final', serial=0) from email.base64mime import body_encode as encode_base64 encode_base64(("\0%s\0%s" % ("User Name", "1234123241-23421334")).encode("ascii"), eol='') 'AFVzZXIgTmFtZQAxMjM0MTIzMjQxLTIzNDIxMzM0'

然而,當我通過Python的smtplib.py發送電子郵件,這是由smtplib.py產生AUTH平原認證字符串:

AFVzZXIgTmFtZQBiJzEyMzQxMjMyNDEtMjM0MjEzMzQn

它在這裏產生:https://github.com/python/cpython/blob/master/Lib/smtplib.py#L629

例子:https://gist.github.com/macolo/bf2811c14d985d013dda0741bfd339e0

我非常需要關於這方面的線索,謝謝。

+0

順便說一下:在AUTH PLAIN失敗後,smtplib.py的行爲方式也不是很奇怪嗎?它應該發送'AUTH LOGIN',但完全忽略它。 – Mario

+0

似乎密碼被格式化爲字節文字,而用戶名被格式化爲字符串文字。當兩種類型串在一起時,會發生以下情況: echo -ne「\ 0用戶名\ 0b'1234123241-23421334'」| base64 AFVzZXIgTmFtZQBiJzEyMzQxMjMyNDEtMjM0MjEzMzQn – Mario

+0

在https://github.com/aldryn/aldryn-emailsettings/blob/master/aldryn_config.py#L30中將問題跟蹤到ascii編碼 – Mario

回答

0

aldryn-emailsettings正在被棄用,它不支持python3呢。使用最新版本的aldryn-django(1.8.15.2或1.9.8.2及更高版本),並將電子郵件連接設置爲EMAIL_URL環境變量。 有關支持的後端,請參閱https://pypi.python.org/pypi/dj-email-url/