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