如果我不拥有MX记录,PHP mail()函数是否可以正常工作

时间:2020-03-05 18:46:12  来源:igfitidea点击:

我不确定我在这里使用所有正确的术语,因此请原谅。

我只是建立了一个带有联系表单的网站,该表单使用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记录的更好版本。