Планирование асинхронного задания электронной почты завершается с ошибкой SMTPAuthenticationError: (535, "5.7.3 Аутентификация не удалась")

Я пытаюсь запланировать асинхронную работу по электронной почте. Я использую Django-RQ в качестве механизма очередей. Я пробовал многочисленные исправления, такие как изменение пароля, проверка его правильности и т. Д. Я могу вручную отправлять SMTP через REPL.

Обновление № 1: насколько я могу убедиться, работник правильно подбирает настройки. Работа правильно подбирает правильное значение для settings.DEFAULT_FROM_EMAIL и имеет правильный адрес электронной почты, установленный в качестве аргумента для send_mail.

Следующий код работает успешно (без django-rq):

send_mail(
    newClaim.linkedOffer.commsPromoHeadline,
    msg_plain,
    settings.DEFAULT_FROM_EMAIL,
    [newRecipient.email],
    html_message=msg_html,
)

в то время как следующий код генерирует ошибку аутентификации SMTP (трассировка внизу):

django_rq.enqueue(
   send_mail,
   newClaim.linkedOffer.commsPromoHeadline,
   msg_plain,
   settings.DEFAULT_FROM_EMAIL,
   [newRecipient.email],
   html_message=msg_html,
   )

проследить:

Traceback (most recent call last):
  File "/home/user1/webapps/dev_django_platform/ENV/lib/python2.7/site-packages/rq/worker.py", line 568, in perform_job
    rv = job.perform()
  File "/home/user1/webapps/dev_django_platform/ENV/lib/python2.7/site-packages/rq/job.py", line 495, in perform
    self._result = self.func(*self.args, **self.kwargs)
  File "/home/user1/webapps/dev_django_platform/lib/python2.7/Django-1.7.7-py2.7.egg/django/core/mail/__init__.py", line 62, in send_mail
    return mail.send()
  File "/home/user1/webapps/dev_django_platform/lib/python2.7/Django-1.7.7-py2.7.egg/django/core/mail/message.py", line 286, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/home/user1/webapps/dev_django_platform/lib/python2.7/Django-1.7.7-py2.7.egg/django/core/mail/backends/smtp.py", line 92, in send_messages
    new_conn_created = self.open()
  File "/home/user1/webapps/dev_django_platform/lib/python2.7/Django-1.7.7-py2.7.egg/django/core/mail/backends/smtp.py", line 59, in open
    self.connection.login(self.username, self.password)
  File "/usr/local/lib/python2.7/smtplib.py", line 622, in login
    raise SMTPAuthenticationError(code, resp)
SMTPAuthenticationError: (535, '5.7.3 Authentication unsuccessful')

Почему выдается исключение и как я могу это исправить?

1 ответ

Я предполагаю, что поставленная в очередь задача выполняется в отдельной рабочей среде. Внутри Джанго send_mail Функция знает, где искать детали Auth. Но внутри рабочего он не может их найти, так как это отдельный процесс.

Вам нужно написать свой заказ send_mail функция, которая не зависит от Django, чтобы обеспечить его настройки.

Другие вопросы по тегам