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
相关产品推荐
相关产品推荐

