Почему мое приложение django не может отправить электронное письмо зарегистрированному пользователю?

#django #gmail #django-admin

#django #gmail #django-администратор

Вопрос:

Я пытаюсь отправить пользователю электронное письмо, содержащее ссылку на приглашение / подтверждение.Команда propmt показывает, что электронное письмо отправляется, но пользователь не получает никакого электронного письма.Я использую свою учетную запись Gmail, а также разрешаю доступ к ней менее защищенным приложениям в моей учетной записи? Какие могут быть возможные ошибки? Вот мой файл настроек:-

 EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'someone@gmail.com'
EMAIL_HOST_PASSWORD = 'password'

DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER
  

хотя я рассматриваю его как uilizing следующим образом:-

 @csrf_protect
def signup(request):
    if request.method == 'POST':
        form = SignupForm(request.POST)
        if form.is_valid():
            user = form.save(commit=False)
            user.is_active = False
            user.save()
            current_site = get_current_site(request)
            mail_subject = 'Activate your blog account.'
            message = render_to_string('acc_active_email.html', {
            'user': user,
            'domain': current_site.domain,
            'uid':urlsafe_base64_encode(force_bytes(user.pk)).decode(),
            'token':account_activation_token.make_token(user),
        })
            to_email = form.cleaned_data.get('email')
            email = EmailMessage(
                    mail_subject, message, to=[to_email]
        )
            email.send()
            return JsonResponse({'success':True})
   else:
        form=SignupForm()
    return JsonResponse({'errors': [(k, v[0]) for k, v in form.errors.items()]})
  

Достаточно странно, что моя консоль показывает электронное письмо, но целевой пользователь не получил это электронное письмо.

введите описание изображения здесь

Комментарии:

1. Вы не можете определить ошибку, посмотрев ваш код, как кто-либо должен узнать, не видя ваш файл настроек или как вы отправляете электронное письмо? Отредактируйте свой вопрос и добавьте соответствующие сведения. (Для тех, кто голосует против, добавьте хотя бы комментарий, чтобы op знал причину)

2. @BidhanMajhi Пожалуйста, проверьте мой вопрос сейчас

Ответ №1:

Виновником является эта строка вашей конфигурации:

 EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
  

Из документации django по console.EmailBackend :

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


Если вы хотите отправлять настоящие электронные письма, выберите подходящий сервер. Поскольку вы, похоже, пытаетесь использовать smtp, вы, скорее всего, захотите использовать django smtp.EmailBackend следующим образом:

 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'