Ошибка "Mailgun Magnificent API" с Django-Anymail в докере на Digital Ocean

Я использую приложение django, работающее в докере, и использую django-anymail для отправки писем через mailgun.

Например, когда я выполняю процесс забытого пароля, я получаю сообщение об ошибке в django-anymail:

AnymailRequestsAPIError: Неверный JSON в ответе API Mailgun Отправка сообщения на testemail@test.com от info @ application .co.uk Ответ API Mailgun 200 (ОК): "Великолепный API Mailgun" @ anymail/backends/base_requests.py в deserialize_json_response в строке 106

Я могу воссоздать эту ошибку, если я docker exec -it на контейнер Django и выполните следующее в python manage.py shell

from django.core.mail import send_mail 
customer_email = send_mail('Test','Test','info@*application*.co.uk',["*test@test.com*"],fail_silently=False) 

Если я запускаю это после сборки и запуска production.yml Docker локально работает, и я получаю электронное письмо, но если я запускаю это на контейнере на моей цифровой океанической капле, я получаю сообщение об ошибке.

Есть конфигурация, которую я пропускаю, чтобы заставить это работать? У меня есть другое приложение django, которое работает на дроплете (без докера), и оно отлично работает с mailgun, использующим ту же настройку.

1 ответ

Решение

Ошибка "Mailgun Magnificent API", скорее всего, вызвана # персонаж в вашем MAILGUN_SENDER_DOMAIN. Это часто происходит, когда вы пытаетесь использовать комментарии в конце строки в формате файла конфигурации, который их не поддерживает, например, dotenv:

# .env
MAILGUN_SENDER_DOMAIN=mail.example.com  # INVALID: dotenv doesn't allow comment here

Если вы обновитесь до django-anymail v6.0, вы получите улучшенное сообщение об ошибке, которое делает это более очевидным.

( Этот ответ охватывает другие ситуации, которые могут привести к " Mailgun Magnificent API.")

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