«Отказано в доступе к ретрансляции» в приложении django с использованием частной электронной почты namecheap

Итак, у меня есть приложение Django, которое отправляет электронные письма с подтверждением пользователям, которые хотят зарегистрировать свою учетную запись. Это выглядит примерно так

views.py

def send_activation_email(user, request):
    current_site = get_current_site(request)
    email_subject = "Activation Email"
    context = {"user": user, 
                "domain": current_site,
                'uid': urlsafe_base64_encode(force_bytes(user.pk)), 
                'token': generate_token.make_token(user)
                }
    email_body = render_to_string('email/activate.html',context)

    email = EmailMessage(subject=email_subject, body=email_body, from_email=settings.EMAIL_FROM_USER, to=[user.email])

    email.send()

и с settings.py выглядит вот так

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'mail.privateemail.com'
EMAIL_FROM_USER = '[email protected]'
EMAIL_HOST_PASSWORD = '[redacted]'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_USE_SSL = False

Проблема в том, что когда я пытаюсь отправить электронное письмо, когда пользователь создает учетную запись, я получаю эту ошибку

SMTPRecipientsRefused at /register/

{'[email protected]': (554, b'5.7.1 <[email protected]>: Relay access denied')}

Что я знаю точно:

  • что это не проблема с частной электронной почтой, с которой Я все еще могу отправлять электронные письма, только не с моего сайта.
  • Я также знаю, что проблема не в том, что gmail не нравится моя электронная почта, поскольку та же ошибка, когда электронная почта отправляется на домен yahoo.com.
  • Я также знаю, что проблема не в том, что settings.py не подключается к views.py
  • Я также знаю, что все данные введены правильно

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

Если кто-то может мне помочь, я был бы очень признателен. У меня были проблемы с отправкой электронных писем в течение примерно 9 дней.

🤔 А знаете ли вы, что...
Python обладает обширной документацией и активным сообществом разработчиков.


61
1

Ответ:

Решено

Я думаю, вам нужно добавить значение для EMAIL_HOST_USER в свой settings.py. Без него Django не будет пытаться аутентифицироваться. Вот соответствующий фрагмент из документов:

EMAIL_HOST_USER
По умолчанию: '' (пустая строка)

Имя пользователя, которое будет использоваться для SMTP-сервера, определенного в EMAIL_HOST. Если пусто, Django не будет пытаться аутентифицироваться.

Имя пользователя должно совпадать с паролем, который вы уже предоставили (т. е. действующей частной учетной записи электронной почты namecheap).