Я использую Django 1.11 и хочу отправлять почту, используя сервер Exchange 2013, который поддерживает только NTLM для аутентификации SMTP. Я понял, что бэкэнд электронной почты по умолчанию django.core.mail.backends.smtp.EmailBackend
поддерживает только LOGIN, PLAIN или CRAM-MD5 для аутентификации. К счастью, я нашел другой многообещающий бэкэнд (https://github.com/shadiakiki1986/django-smtp-ntlm-backend) для SMTP с аутентификацией NTLM. Установка серверной части прошла успешно, но она не работает.
На консоли Python происходит следующее:
>>> from django.core.mail import send_mail
>>> send_mail('test subject', 'message', 'email@address.com', ['recipient@gmail.com'], fail_silently=False,)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/django/core/mail/__init__.py", line 62, in send_mail
return mail.send()
File "/usr/local/lib/python2.7/site-packages/django/core/mail/message.py", line 348, in send
return self.get_connection(fail_silently).send_messages([self])
File "/usr/local/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 111, in send_messages
sent = self._send(message)
File "/usr/local/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 127, in _send
self.connection.sendmail(from_email, recipients, message.as_bytes(linesep='\r\n'))
File "smtplib.py", line 736, in sendmail
self.rset()
File "smtplib.py", line 470, in rset
return self.docmd("rset")
File "smtplib.py", line 395, in docmd
return self.getreply()
File "smtplib.py", line 369, in getreply
raise SMTPServerDisconnected("Connection unexpectedly closed")
smtplib.SMTPServerDisconnected: Connection unexpectedly closed
Соответствующие настройки в settings.py:
EMAIL_ENABLE=True
EMAIL_BACKEND=django_smtp_ntlm_backendNTLMEmail
EMAIL_HOST=<mailserver>
EMAIL_PORT=25
EMAIL_HOST_USER=<domain>\<user>
EMAIL_HOST_PASSWORD=<password>
DEFAULT_FROM_EMAIL=<email>
EMAIL_USE_SSL=False EMAIL_USE_TLS=False
Эти настройки работают нормально при тестировании SMTP инструмент под названием Swaks. У кого-нибудь есть опыт использования аутентификации Exchange и NTLM для отправки писем с Django 1.11? Я могу себе представить, что с более новой версией Django и Python 3 все может быть проще из-за изменений в базовом smtplib, но я застрял на Django 1.11. Я благодарен за любые подсказки.