Django send_mail не отправляет электронную почту, ошибка не выдается

Я работаю с Django 2.0.7, используя send_mail, как описано в документации. Используя вид ниже, я не получаю письма, но и ошибок нет.

Настройки для отправки почты доказали свою эффективность, поскольку я получаю электронные письма, отправленные библиотекой аутентификации django-rest-auth.

Учитывая, что я не вижу ошибок в коде send_mail, на мой взгляд, мне интересно, может ли кто-нибудь помочь мне выяснить, где это идет не так.

Вид отправки почты:

@api_view(['POST'])
def contact(request):
    print("contact view")
    form = ContactForm(request.POST)
    if form.is_valid():
        print("form is valid")
        print(f"form.cleaned_data:\n{form.cleaned_data}")
        message = create_message(form.cleaned_data)
        send_mail(
            "Test email",
            message,
            'from@example.com',
            ['my@email.com'],
            fail_silently=False,
        )
        data = {}
        status = rest_status.HTTP_200_OK
    else:
        print("form NOT valid")
        print(f"form.errors:\n{form.errors}")
        data = form.errors
        status = rest_status.HTTP_400_BAD_REQUEST
    return Response(data, status=status)

Благодаря отпечаткам я знаю, что вызывается правильное представление, что данные POST получены правильно и что полученные данные действительны.

В качестве получателя в этом коде я использовал другой адрес электронной почты, чем на самом деле, поскольку мне не нужен спам. Но я уверен, что использую правильный адрес электронной почты получателя.

Я также проверил, заменяю ли следующую строку:

message = create_message(form.cleaned_data)

В строке ниже что-то меняется, но это не так.

message = "Test message"

Настройки электронной почты: (здесь удален фактический адрес хоста)

EMAIL_USE_TLS = True
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'xxxx'
EMAIL_HOST_PASSWORD = os.environ['EMAIL_PASSWORD']
EMAIL_HOST_USER = os.environ['EMAIL_USER']
EMAIL_PORT = 587
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER

Вы пробовали явно использовать send_mail из оболочки Python? Это может дать вам лучшее понимание. Хотя я не могу найти ничего плохого в этой настройке. Попробуйте также проверить свой почтовый сервер.

Piyush Das 31.10.2018 15:43

Спасибо. Выполнение этого в оболочке дает тот же результат. Ошибок нет, почты не получено. Думаю, мне нужно выяснить, как получить доступ к журналам почтового сервера. Он от хоста домена, и это новая область для меня, так что я думаю, мне придется немного изучить.

Rik Schoonbeek 01.11.2018 16:19

Вы что-нибудь нашли, потому что у меня такая же проблема.

Leoog 08.05.2019 02:47

Это было некоторое время назад. Не помню, как я это обошел. Так что с сожалением должен сказать, что я этого не сделал.

Rik Schoonbeek 08.05.2019 09:22
1
4
545
0

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