2008-09-02 33 views
6

我不确定我在这里使用所有正确的术语,所以要宽容。如果我没有MX记录,PHP邮件()函数是否工作

我刚刚建立了一个联系表单,它使用PHP mail()函数发送一封电子邮件。够简单。然而,实际网站实际上并未发送电子邮件,测试网站确实如此。所以这不是我的代码。

这是一个共享主机,我们有另一个网站有相同的功能,完美的作品,所以它不是服务器。

两者之间的唯一区别是,不起作用的站点只有名称服务器指向我们,所以MX记录永远不会触及我们的服务器。

所以我的问题是,如果我们没有指向我们的服务器的MX记录,有人可以确认mail()函数不会工作。谢谢

回答

2

嘿家伙谢谢你的答案,这是非常感谢。

在忽略了几个月的问题后,它又出现了,但我确实找到了我的问题的答案。

首先,根据您的建议,PHP和mail()函数按预期工作。邮件正在发送。

问题在于电子邮件发送时,它只是假设因为它被从mydomain.com发送到*@mydomain.com电子邮件,电子邮件本身托管在同一台服务器上,所以它被发送到那里,而不是忽略MX记录。

好吧,这比这更复杂一点,但那是一般的jist。

编辑: 找到更好的主题sendmail and MX records when mail server is not on web host版本。

0

是的,你可以在'from'字段放入你想要的东西,它仍然可以工作。

3

是的。它会工作得很好。我有一个PHP脚本,使用mail()函数和设置为Google Apps的MX记录。

如果这两个脚本位于不同的主机上(这从你的文章有点不清楚),那么请确保主机不会阻塞某些自定义标题。在创建我的脚本时,我遇到了这个问题,但删除了除From头以外的所有内容,修复了问题。

2

某些主机(Godaddy是最差的)会阻止您使用sendmail和mail()。

我通常使用smtp从我的php应用程序发送电子邮件,并使用PHPMailer这很容易。许多应用程序正在使用旧版本的PHPMailer,有时更新它可以提供帮助。快速添加短脚本也很容易。

1

mail()函数从托管脚本的服务器发送邮件。由于许多共享托管提供程序托管单独的邮件服务器,并且因为mail()函数不支持任何类型的身份验证,所以许多共享托管提供程序都会阻止它。

1

如果网站使用SPF,请记得将发送网站包含在SPF记录中。欲了解更多信息,请参阅here