Django send_mail не отправляет электронную почту, ошибка не выдается - PullRequest
0 голосов
/ 31 октября 2018

Я работаю с 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
...