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