在django应用程序中使用namecheap私人电子邮件“中继访问被拒绝”

mcvgt66p  于 2023-02-17  发布在  Go
关注(0)|答案(1)|浏览(117)

我有一个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天了

xqnpmsa8

xqnpmsa81#

我认为你需要在settings.py中为EMAIL_HOST_USER添加一个值。没有它,Django就不会尝试验证。以下是来自文档的相关信息:
EMAIL_HOST_USER
默认值:''(空字符串)
用于EMAIL_HOST中定义的SMTP服务器的用户名。如果为空,Django将不会尝试验证。
用户名应与您已经提供的密码设置相匹配(即有效的namecheap私人电子邮件帐户)。

相关问题