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

Django后端应用调用send_mail函数报错无法发送邮件问题求助

Django发邮件失败排查方案

1 修正配置拼写错误

你配置的EMAIL_BACKEND存在拼写错误,将单数backend改为复数backends即可:

# settings.py 修正后
EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST='smtp.gmail.com'
EMAIL_PORT=587
EMAIL_HOST_USER='kalp2002prajapati@gmail.com'
EMAIL_HOST_PASSWORD='你的应用密码'
EMAIL_USE_TLS = True
EMAIL_USE_SSL = False

2 修正导入语法问题

view.py中的导入语句换行不符合Python语法,修正为:

from django.core.mail import send_mail, EmailMessage

3 统一发件人地址

Gmail会校验发件人身份,send_mail函数传入的发件人地址必须和EMAIL_HOST_USER保持一致,你当前代码里发件人写的是kalpprajapati2002@gmail.com,和配置的登录邮箱不符,修改为:

send_mail(
    data['subject'],
    'Name: '+ data['name'] + '\nEmail: '+data['email']+'\nMessage:'+ data['message'],
    'kalp2002prajapati@gmail.com', # 和EMAIL_HOST_USER保持一致
    ['kalp2002prajapati@gmail.com'],
    fail_silently=False
)

4 正确配置Gmail发件权限

Gmail已不再支持直接使用账号密码登录SMTP服务,需按以下步骤配置:

  • 登录Google账号,开启两步验证
  • 在账号安全设置中生成16位应用密码,替换EMAIL_HOST_PASSWORD的值,不要使用原账号的登录密码

5 定位具体报错信息

当前裸except语句会吃掉所有错误信息,无法定位根因,临时修改异常捕获逻辑打印具体报错:

# 视图文件顶部导入
import traceback

# 替换原except块
except:
    traceback.print_exc()
    return Response({'error': 'Message failed to send'})

重启服务后重新发起请求,查看控制台输出的错误栈即可定位具体问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:00:02