在生产环境中,Django Allauth的登录/注册因SMTPAuthenticationError(535)而失败
我在生产环境遇到一个问题:使用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
- 前往
/accounts/login/或注册页面 - 提交有效凭据
- Allauth尝试发送验证邮件
- 请求因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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。