You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Django Allauth发送邮件遇SMTPAuthenticationError问题求助

问题描述

使用Django Allauth发送注册、账户验证等邮件时,开发阶段以控制台作为邮件后端功能正常,但切换为Gmail SMTP发送后出现如下认证错误:

SMTPAuthenticationError at /accounts/password/reset/
(535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials q1-20020adfdfc1000000b0022e049586c5sm11068760wrn.28 - gsmtp')

已尝试错误提示中的步骤但未解决,当前Django邮件配置代码如下:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_USE_TLS = True
EMAIL_PORT = 587
EMAIL_HOST_USER = 'example@gmail.com'
EMAIL_HOST_PASSWORD = '*****'

排查与解决方法

  • 启用两步验证并创建应用专用密码:Gmail当前默认不支持直接使用账户密码登录SMTP服务,需先开启Google账户的两步验证,随后在账户安全设置中生成应用专用密码,将该密码替换配置中的EMAIL_HOST_PASSWORD。
  • 核对账户安全配置:确认Google账户未开启已停用的“不太安全的应用访问”功能,重点验证两步验证状态为已开启,且应用专用密码是对应“邮件”或自定义类别生成的。
  • 检查配置参数准确性:
    • EMAIL_USE_TLS需设为True,EMAIL_PORT对应587端口;若使用465端口则需将EMAIL_USE_SSL设为True,同时关闭EMAIL_USE_TLS
    • EMAIL_HOST_USER必须填写完整的Gmail邮箱地址,不能省略@gmail.com后缀
  • 验证网络连通性:确保服务器能够访问smtp.gmail.com的587端口,未被防火墙或代理拦截
  • 单独测试SMTP连接:使用Python脚本直接测试Gmail SMTP服务,排除Django配置外的问题:
    import smtplib
    from email.mime.text import MIMEText
    
    # 配置信息
    sender_email = "你的Gmail邮箱地址"
    app_password = "生成的应用专用密码"
    receiver_email = "测试收件邮箱"
    
    # 构造邮件
    message = MIMEText("这是一封测试邮件,用于验证SMTP配置是否正常")
    message["Subject"] = "Gmail SMTP测试"
    message["From"] = sender_email
    message["To"] = receiver_email
    
    try:
        # 连接SMTP服务器并发送邮件
        with smtplib.SMTP("smtp.gmail.com", 587) as server:
            server.starttls()
            server.login(sender_email, app_password)
            server.sendmail(sender_email, receiver_email, message.as_string())
        print("邮件发送成功")
    except Exception as e:
        print(f"发送失败,错误信息:{e}")
    

内容的提问来源于stack exchange,提问作者BenD2525

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 09:25:39