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

我刚刚建立了一个带有联系表单的网站,该表单使用 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 记录中。欲了解更多信息,请参阅 这里.

是的,您可以在“发件人”字段中输入您想要的任何内容,它仍然有效。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top