私は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
認証方法をサポートすると発表しましたが、サポートしていませんでした。
急いでおり、管理者とこの問題を解決すると締め切りを逃してしまうため、PLAIN
認証方法を優先するように SMTP クラスにパッチを適用する必要がありました。これを行うには、SMTP クラスから 1 行を変更してコピーするだけで、メソッドのサブクラスを作成してメソッドSMTP_SSL
をオーバーライドする必要があります。login
login
次の行を変更します。
preferred_auths = [AUTH_CRAM_MD5, AUTH_PLAIN, AUTH_LOGIN]
に:
preferred_auths = [AUTH_PLAIN, AUTH_LOGIN]
とにかく、パッチを適用したクラスを投稿しました:http://pastebin.com/ecL9A3P4。