在Django/Wagtail中使用send_mail无法自定义发件人邮箱
Gmail SMTP 自定义发件人不生效的解决方案
核心原因
Gmail的SMTP服务会强制替换自定义发件人为你的登录账号(即EMAIL_HOST_USER),除非你完成别名邮箱配置或开启对应权限。
解决步骤
添加别名邮箱到Gmail账号
- 登录Gmail,进入「设置」→「账号和导入」
- 在「发送邮件为」栏目,点击「添加另一个邮箱地址」
- 输入目标发件人邮箱,按提示完成验证(通常是接收验证码邮件)
- 验证后,可设置该别名为默认发件地址,或在发送时指定
使用应用密码(推荐,适用于开启两步验证的账号)
- 登录Google账户,进入「安全性」→「应用密码」(仅开启2FA后可见)
- 选择「邮件」和对应设备(选「其他(自定义名称)」即可),生成应用密码
- 在Django的
settings.py中,将EMAIL_HOST_PASSWORD替换为这个生成的应用密码,而非Gmail账户密码
检查Django配置示例
确保你的邮件配置正确:EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_USE_TLS = True EMAIL_HOST_USER = 'your-gmail-account@gmail.com' EMAIL_HOST_PASSWORD = 'your-generated-app-password'发送邮件的格式要求
指定from_email时,要用已添加的别名邮箱,如需显示友好名称,格式为:"新闻通讯订阅" <your-alias-email@example.com>
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

