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

Django项目启动遇SMTP认证错误:账号密码正确但提示无效

Django启动时SMTPAuthenticationError问题排查与解决

问题现象

启动Django应用时抛出SMTPAuthenticationError,提示用户名和密码不被接受,但确认账号密码正确。


一、先修复代码逻辑错误

你的utils.py存在致命逻辑问题:邮件发送代码直接写在模块顶层,导致Django启动加载模块时就自动执行邮件发送,而非调用SendEmail函数时才触发,这是启动就报错的直接原因,同时你并未定义SendEmail函数。

修改utils.py代码:

from django.conf import settings
from django.core.mail import send_mass_mail, EmailMessage

def SendEmail():
    message1 = EmailMessage(
        "Subject here",
        "Here is the message",
        settings.EMAIL_HOST_USER,  # 引用配置中的发件人,避免硬编码错误
        ["pawwne27@gmail.com"],
    )
    message_tuple = ((message1.subject, message1.body, message1.from_email, message1.to),)
    send_mass_mail(message_tuple, fail_silently=False)

二、解决Gmail SMTP认证问题

即使密码正确,Gmail默认限制第三方应用直接使用账号密码登录,需按以下操作处理:

  1. 优先方案:给邮箱开启两步验证,生成应用专用密码,用此密码替换settings.py中的EMAIL_HOST_PASSWORD。
  2. 测试临时方案:若不想开启两步验证,可开启Gmail的"不太安全的应用访问"(仅用于测试,生产环境禁用)。
  3. 修正拼写错误:你的settings.py中EMAIL_HOST_USER写的是emnosy.wqrfl@gmail.com,但utils.py硬编码的发件人是emnosys.wqrfl@gmail.com(少了一个s),二者必须一致,建议直接用settings.EMAIL_HOST_USER避免硬编码失误。

三、修正settings.py配置

确保邮箱配置信息准确:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_USE_TLS = True
EMAIL_PORT = 587
EMAIL_HOST_USER = "emnosys.wqrfl@gmail.com"  # 统一发件人邮箱拼写
EMAIL_HOST_PASSWORD = "你的应用专用密码"  # 替换为生成的应用专用密码

四、测试验证

启动应用后,访问SendEmailView对应的URL触发邮件发送,此时才会执行SMTP认证,可正常排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 20:40:53