Проблема с отправкой электронной почты Django: Письмо не отправлено и не отображается в отправленных элементах
Я работаю над проектом Django, в котором мне нужно отправить письмо с прикрепленным PDF-файлом. Моя текущая настройка выглядит следующим образом:
Версия Django: 4.0.3 Версия Python: 3.12.2
Проблема: Код работает без ошибок. Однако письмо не получено адресатом. Письмо также не появляется в папке "Отправленные" отправляющего аккаунта Gmail.
То, что я пробовал: Убедился, что конфигурация электронной почты в settings.py верна и использует SMTP-сервер Gmail. Проверил, что PDF-файл существует по указанному пути. Убедились, что в процессе отправки письма не возникает исключений. Попробовал отправить простое письмо без вложений, но все еще безрезультатно. Проверили настройки безопасности учетной записи Gmail, включая включение "Менее безопасного доступа к приложениям" и использование пароля приложения.
**
Вопросы:
**
Что может быть причиной того, что письмо не отправляется или не появляется в отправленных элементах? Есть ли дополнительные шаги по отладке, которые я могу предпринять, чтобы выяснить, что идет не так? Может быть, проблема в SMTP-сервере Gmail или я что-то упускаю в конфигурации Django?
def send_email(request, customer_id): try: order = customer_agent.objects.get(customer_id=customer_id) except customer_agent.DoesNotExist: return HttpResponseNotFound("Заказ не найден")
subject = 'Your Order Details'
message = 'Please find attached the PDF with your order details.'
recipient_email = order.customer_email
file_path = f"{settings.BASE_DIR}/orders_data/order_{customer_id}.pdf"
mail = EmailMessage(subject=subject, body=message, from_email=settings.EMAIL_HOST_USER, to=[recipient_email])
mail.attach_file(file_path)
try:
mail.send()
print("Email sent successfully!")
except Exception as e:
print(f"Failed to send email: {e}")
return HttpResponse(f"Failed to send email: {e}")
return HttpResponse("Email sent successfully!")
В настройках попробуйте добавить
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
вместо
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
и проверьте, печатается ли письмо на консоли или нет. Если письмо печатается на консоли, то в настройках должна быть ошибка. Убедитесь, что эти переменные верны
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'your-email@example.com'
EMAIL_HOST_PASSWORD = 'your-email-app-password'