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

Django应用使用Gmail SMTP发件异常:发件收件地址一致

解决Django发送邮件时发件人被强制替换的问题

这个问题我之前也碰到过,核心原因是Gmail的SMTP服务有严格的发件人验证规则:不管你在send_mail里指定什么from_email,只要你是用myemail@gmail.com登录SMTP服务器,Gmail会自动把发件人替换成这个登录账号——除非你提前在Gmail中添加并验证了目标发件地址作为别名。

下面给你两种可行的解决方案:

方案一:在Gmail中添加并验证发件别名

如果你确实需要用user@gmail.com作为发件人,得先在你的myemail@gmail.com账号里配置别名:

  • 登录myemail@gmail.com,进入「设置」→「账号和导入」
  • 找到「发送邮件为」选项,点击「添加另一个邮箱地址」
  • 按照提示输入user@gmail.com,完成邮箱验证(通常会发一封验证邮件到user@gmail.com,点击链接确认即可)
  • 配置完成后,Gmail就允许你用这个别名作为发件人发送邮件了,此时你的send_mail代码无需修改。

方案二:修改发件人配置为登录账号

如果不需要用其他发件地址,直接把send_mail的from_email改成和settings.py里的EMAIL_HOST_USER一致即可,甚至可以留空让Django自动使用默认配置:

# 导入settings(如果没导入的话)
from django.conf import settings

send_mail(
    'subject',
    'message',
    # 直接使用登录邮箱,或者写成带名称的格式:'我的应用 <myemail@gmail.com>'
    settings.EMAIL_HOST_USER,
    # 这里改成你实际要发送的收件人邮箱
    ['target_user@example.com',],
    fail_silently=False,
)

另外补充:你收到的收件人是myemail@gmail.com,是因为你在send_mail的收件人列表里填的就是这个地址,只要修改这个列表里的邮箱就能发送给其他用户啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 20:17:33