在生产环境中,Django Allauth的登录/注册因SMTPAuthenticationError(535)而失败

后端开发 2026-07-11

我在生产环境遇到一个问题:使用Django Allauth时,登录和注册因为SMTP身份验证错误而失败。


❗ Error

SMTPAuthenticationError: (535, b'Incorrect authentication data')

Relevant traceback:

File ".../django/core/mail/backends/smtp.py", line 97, in open
    self.connection.login(self.username, self.password)

File ".../smtplib.py", line 669, in auth
    raise SMTPAuthenticationError(code, resp)

Environment

  • Django: 6.0.3
  • Python: 3.14.3
  • django-allauth: 最新版本
  • 部署环境: cPanel (Passenger)
  • 操作系统: Linux(基于RHEL)

Email Configuration

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'mail.agrotekpluss.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_USE_SSL = False

EMAIL_HOST_USER = config('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = config('EMAIL_HOST_PASSWORD')

DEFAULT_FROM_EMAIL = '[email protected]'

Allauth Settings

ACCOUNT_EMAIL_VERIFICATION = "mandatory"
ACCOUNT_LOGIN_METHODS = {'email'}
ACCOUNT_SIGNUP_FIELDS = ['email*', 'password1*', 'password2*']

Steps to Reproduce

  1. 前往 /accounts/login/ 或注册页面
  2. 提交有效凭据
  3. Allauth尝试发送验证邮件
  4. 请求因SMTPAuthenticationError失败

Actual Behavior

  • 登录/注册失败
  • 邮件未发送
  • 在SMTP身份验证过程中抛出异常

Expected Behavior

  • 用户成功登录或注册
  • 验证邮件已发送

What I’ve Observed

  • 该问题仅在生产环境中出现
  • 它发生在Allauth发送验证邮件时
  • 如果我禁用邮件验证,登录就能正常工作:
ACCOUNT_EMAIL_VERIFICATION = "optional"

Question

在这种设置下,可能导致 (535, b'Incorrect authentication data') 的原因是什么?

  • 可能是SMTP凭据错误或主机不匹配?
  • SMTP服务器是否需要TLS/认证方面的额外配置?
  • 是否存在Django 6 / Python 3.14与 SMTP的已知问题?

Additional Notes

  • SMTP已配置为使用端口587,并启用TLS
  • 使用环境变量来存放凭据
  • 本地没有问题(仅在生产环境中)

对于在此场景下调试或修复SMTP身份验证问题的任何建议,将不胜感激。

解决方案

一切看起来都挺好,所以我觉得这很可能是你主机的问题。既然在开发环境没有问题,你在开发时使用的邮件主机是什么?你能否再尝试使用另外一个SMTP客户端?

也请向你的主机服务商确认邮件主机是否实际是:

EMAIL_HOST = 'mail.agrotekpluss.com'
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章