如何在django中使用gmail smtp更改回复和返回路径头

如何在django中使用gmail smtp更改回复和返回路径头,django,smtp,gmail,Django,Smtp,Gmail,我在django网站上使用gmail smtp。我有一个联系人表单,用户在其中放置电子邮件和消息,然后我向管理员发送邮件,其中包含: email = EmailMessage('email subject', 'email message', settings.EMAIL_HOST_USER, ['admin.mysite@gmail.com'], headers = {'Reply-To'

我在django网站上使用gmail smtp。我有一个联系人表单,用户在其中放置电子邮件和消息,然后我向管理员发送邮件,其中包含:

   email = EmailMessage('email subject', 'email message', settings.EMAIL_HOST_USER,
                        ['admin.mysite@gmail.com'],
                          headers = {'Reply-To': 'user@foo.bar',
                               'Sender': 'user@foo.bar','from': 'user@foo.bar','Return-Path': 'user@foo.bar'})
   email.send(fail_silently=False)

电子邮件发送/接收正确,但当管理员客户端在gmail中选择“回复”时,它总是回复设置。电子邮件\主机\用户,而不是用户地址。如果您使用smtp.gmail.com发送邮件,并且发件人的电子邮件地址不正确,则在电子邮件原始标题上,发件人和返回路径将设置为。email\u HOST\u USER

yourgoogleemailname@gmail.com,然后Gmail将重写标题并将发件人地址设置为yourgoogleemailname@gmail.com. 有关更多信息和可能的解决方案,请参阅。

谷歌违反了定义SMTP服务器预期操作的RFP,重写了邮件头。这可能是问题的根本原因:

由于Gmail的限制,我有同样的问题已经一年了

但今天我重试了一下,结果成功了,谷歌似乎改变了政策

设置.py .... 默认的电子邮件地址='Infoma Admin'
Django 2.1.7

你是说你是通过gmail的smtp服务器smtp.gmail.com发送邮件的吗?而且,当收件人收到邮件时,发件人地址和回复地址显示为与您用来发送邮件的gmail帐户关联的gmail地址,而不是您在代码中指定的发件人地址?是的,smtp.gmail.com会忽略邮件头的某些部分。我想这一定是一个安全功能。我目前希望在我的服务器上使用exim4而不是Gmail来回复,但在我的情况下,我想动态修改发件人或回复收件人,因为每个用户都将通过相同的联系人表单发送电子邮件,并在其电子邮件中提供一个输入字段。这很好。但是,如上所述,如果您通过smtp.gmail.com发送邮件,gmail将重写邮件头,将发件人地址和回复地址替换为yourgoogleemailname@gmail.com. 如果这对你来说是一个阻碍,那么你可能想通过不同的发送SMTP服务器发送这些邮件,例如SendGrid或UltraSMTP.com。事实上,我找到了解决方法,这实际上是一个bug,我发送的电子邮件带有设置。email\u HOST\u USER是一个与管理员链接的gmail帐户。mysite@gmail.com. 我刚刚创建了另一个没有链接的gmail帐户,现在回复正常了。在主要的时间里,我用exim安装了我自己的SMTP服务器,并且了解到这个错误与发送电子邮件地址有关。。。Amazon.de和许多其他人对SPF/DMARC对齐中的smtp 5321地址要求不严格。。。这是相当普遍和良好的安全明智的。不管怎样,GSuite/Workspace没有修复它的设置。因此,您只有3个选项,更改主地址或添加单独的SMTP登录。