#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'