如果我不拥有MX记录,PHP mail()函数是否可以正常工作
我不确定我在这里使用所有正确的术语,因此请原谅。
我只是建立了一个带有联系表单的网站,该表单使用PHP mail()函数发送电子邮件。很简单。但是,实际站点实际上并没有发送电子邮件,测试站点实际上是发送电子邮件。所以这不是我的代码。
这是一台共享主机,我们还有另一个站点具有与之完全相同的功能,因此它不是服务器。
两者之间的唯一区别是,无法正常运行的站点仅具有指向我们的名称服务器,因此MX记录永远不会触及我们的服务器。
所以我的问题是,如果我们没有指向服务器的MX记录,是否可以请某人确认mail()函数不会起作用。谢谢
解决方案
回答
是的,我们可以在"发件人"字段中输入所需的内容,并且仍然可以使用。
回答
是的。它将正常工作。我有一个使用mail()函数并将MX记录设置为Google Apps的PHP脚本。
如果这两个脚本位于不同的主机上(从帖子中还不清楚),请确保主机不会阻止某些自定义标头。创建脚本时,我遇到了这个问题,但是除去From头之外的所有内容都解决了该问题。
回答
一些主机(Godaddy最糟糕)阻止我们使用sendmail和mail()。
我通常使用smtp从我的php应用程序发送电子邮件,而使用PHPMailer则非常容易。许多应用程序正在使用旧版本的PHPMailer,有时对其进行更新可能会有所帮助。也很容易将其快速添加到短脚本中。
回答
mail()函数从托管脚本的服务器发送邮件。由于许多共享的托管提供程序都托管单独的邮件服务器,并且由于mail()
函数不支持任何类型的身份验证,因此许多共享的托管提供程序都将其阻止。
回答
如果该站点使用SPF,请记住在SPF记录中包括发送站点。有关更多信息,请参见此处。
回答
大家好,谢谢回答,非常感谢。
在忽略了几个月的问题后,问题又再次出现了,但是我确实找到了解决我问题的答案。
首先,正如回答所建议的,PHP和mail()函数按预期工作。邮件正在发送。
问题出在发送电子邮件时,它只是假设由于电子邮件是从mydomain.com发送到*@mydomain.com电子邮件,因此电子邮件本身托管在同一服务器上,因此它被发送到同一服务器上,而忽略了MX记录。
好吧,这比这要复杂一些,但这就是一般的技巧。
编辑:
当邮件服务器不在Web主机上时,找到了主题sendmail和MX记录的更好版本。