0

我想代表用户向第三方发送电子邮件。关键是让用户的电子邮件显示为“发件人:”电子邮件。

我尝试send_mail将用户的电子邮件用作from_email,但无济于事。当我使用 gmail 的服务器发送邮件时,第三方将其EMAIL_HOST_USER视为“发件人:”电子邮件。当我尝试使用 namecheap 的邮件服务器时,我得到了SMTPRecipientsRefused: {u'<to email>': (553, '5.7.1 <from email>: Sender address rejected: not owned by user <EMAIL_HOST_USER>')}.

如果可能的话,我也想避免询问他们的密码。

4

2 回答 2

3

简短的回答:你不能那样做。

过去,邮件服务器在任何人要求时都可以很轻松地发布邮件,但随后垃圾邮件发生了,人们意识到检查发送电子邮件的人是否确实是其地址出现的人实际上非常重要在From:标题中。

现在有几种机制使得欺骗发件人电子邮件地址变得非常困难。这些包括:

  1. 发件人策略框架 (SPF):一种电子邮件验证系统,通过对授权从特定电子邮件地址发送电子邮件的 IP 地址进行限制来工作。如果您尝试从与电子邮件地址的合法所有者无关的 IP 地址发送电子邮件,您的邮件将被拒绝。

  2. DomainKeys Identified Mail (DKIM):一种用于确认声称来自特定邮件服务器的电子邮件确实来自该服务器的方法。

  3. 邮件传输代理限制:如今,大多数 MTA 都被配置为只接受来自它已经认识的人的电子邮件。(这就是您看到Sender address rejected: not owned by user错误消息的原因)。

相反,您最好的选择 - 基本上是您唯一的选择 - 是将您自己的电子邮件地址放在From:标题中,然后从您自己的邮件服务器发送电子邮件。如果您希望将回复发送给其他人,请添加Reply-To:包含其电子邮件地址的标题。

于 2013-11-29T22:31:25.937 回答
0

如果您使用的是 Exchange,您也许可以使用 Exchangelib 之类的库,其中作者似乎受到了 Django 的一些设计决策的启发。不幸的是,看起来您仍然需要询问用户密码。稍后我将进一步研究这个问题,由于我对 Django 项目使用 LDAP 身份验证,也许有一些方法可以使用它来对电子邮件服务器进行身份验证,但我对此表示怀疑。

看到这个问题: https ://serverfault.com/questions/546255/sending-email-with-python-django-through-microsoft-exchange-imap

于 2016-10-26T19:52:35.290 回答