使用mail()

时间:2015-12-19 19:16:45

标签: php email sendmail email-headers mail-sender

问题的简短版本:

如何在PHP中使用mail()邮件时将Sender:标头设置为webmaster@ourdomain.com

(即Sender:header,而不是From:标题)

长版:

我们的服务器发送邮件被错误地识别为垃圾邮件。普通邮件(来自邮件客户端)没有这个问题(DKIM / SPF都没问题)。

正常和服务器发送邮件之间的最大区别是"发件人:"头。从邮件客户端发送邮件时一切都很好:

From: name@ourdomain.com
X-Sender: name@ourdomain.com

通过PHP发送的邮件标题:

From: name@ourdomain.com
Sender: admin@vps1949.ourvpsprovider.com  

第二个mailaddress确实存在,但我绝对不想要我们的管理邮件地址。管理员地址使一些邮件服务器认为它是垃圾邮件 - 它绝对不是。 (它被视为垃圾邮件,因为,尽管我们在DNS中为vps1949.ourvpsprovider.com提供了MX记录和SPF记录,但邮件服务器无法识别这些记录。我只是中等经验的DNS,不足以理解为什么会这样。)

ourdomain.com和vps1949.ourvpsprovider.com当然指向相同的IP。

那么在PHP中使用mail()进行邮件发送时,如何将Sender:header设置为webmaster@ourdomain.com?那会为我们解决它。

(即Sender:header,而不是From:标题)

这将解决我们所有的问题。

谷歌没有运气,我已经搜索了几个小时并试了好几件事无济于事。 (例如,sendmail上的-f标志不是解决方案。)

由于我们有VPS,因此我有完整的服务器访问权限,因此如果需要,可以更改或添加ini文件。 (我找不到sendmail.ini。)

任何人都可以提供帮助吗?

2 个答案:

答案 0 :(得分:0)

查看为服务器的IP地址设置反向DNS值。这必须由您的ISP完成。不正确的值将导致邮件进入垃圾文件夹。

答案 1 :(得分:0)

我通过更改服务器上的主机名来解决它。我找到了How to change envelope from address using PHP mail?并得到了每个人都不喜欢的答案。有效。最后,需要数周和数周时间才能找到这个......这很简单。

对于拥有相同且恰好在CentOs 7上运行的任何人: http://www.itzgeek.com/how-tos/linux/centos-how-tos/change-hostname-in-centos-7-rhel-7.html