所以我有一个 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')}
我确定的是:
settings.py
未连接
到views.py
据我所知并与 namecheap 支持人员交谈,该问题很可能是由电子邮件标题引起的,但据我所知,我似乎找不到任何问题。
如果有人能够帮助我,我将非常感激。我发送电子邮件时遇到问题大约 9 天了
我认为您需要在
EMAIL_HOST_USER
中添加 settings.py
的值。没有它,Django 将不会尝试进行身份验证。这是 docs 中的相关内容:
EMAIL_HOST_USER
默认值:''(空字符串)用于
中定义的 SMTP 服务器的用户名。 如果为空,Django 将不会尝试身份验证。EMAIL_HOST
用户名应与您已经提供的密码设置相匹配(即有效的私人电子邮件帐户)。