我有一个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 = 'verification@ianisdo.xyz'
EMAIL_HOST_PASSWORD = '[redacted]'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_USE_SSL = False
问题是,当我尝试在用户创建帐户时发送电子邮件时,我收到此错误
SMTPRecipientsRefused at /register/
{'ianis.donica@gmail.com': (554, b'5.7.1 <ianis.donica@gmail.com>: Relay access denied')}
我可以肯定的是:
- 这不是一个私人的namecheap电子邮件的问题,我仍然可以发送电子邮件,只是不能从我的网站。
- 我也知道这个问题不是由于gmail不喜欢我的电子邮件,因为同样的错误时,电子邮件发送到yahoo.com域。
- 我还知道问题不在于
settings.py
未连接到views.py
- 我还知道所有的细节都输入正确
据我所知,并与namecheap支持人员交谈,这个问题很可能是由电子邮件的标题引起的,但据我所知,我似乎找不到任何问题。
如果有人能帮我,我会非常感激。我有问题发送电子邮件约9天了
1条答案
按热度按时间xqnpmsa81#
我认为你需要在
settings.py
中为EMAIL_HOST_USER
添加一个值。没有它,Django就不会尝试验证。以下是来自文档的相关信息:EMAIL_HOST_USER
默认值:''(空字符串)
用于
EMAIL_HOST
中定义的SMTP服务器的用户名。如果为空,Django将不会尝试验证。用户名应与您已经提供的密码设置相匹配(即有效的namecheap私人电子邮件帐户)。