【问题标题】:Reasons why PHP mail might not be workingPHP 邮件可能无法正常工作的原因
【发布时间】:2010-03-25 20:43:36
【问题描述】:

我正在使用 PHP mail() 函数从联系表单发送电子邮件。该函数返回true,所以应该没问题。但我没有收到电子邮件。

我看到一些帖子说您应该始终在 PHP 邮件中使用 FromReply-To 标头来确保它已送达。我已经尝试了各种配置,但还没有任何效果。

还有其他方法可以调试mail()函数吗?

【问题讨论】:

  • 一些代码怎么样,我们可以看到你在做什么?

标签: php email


【解决方案1】:

大多数情况下,此问题是由标头引起的,邮件可能会被发送,但由于标头错误,SMTP 服务器可能永远不会发送它

我建议您使用 PHP 的邮件类,例如 phpMailer,它可以处理您的所有标题问题,并且有一个非常好的使用界面

干杯

【讨论】:

  • 谢谢 - 我独立发现这是 Joomla 使用的,所以它不会太糟糕。 ;)
【解决方案2】:

如果您使用的是 Windows,则需要安装 SMTP 服务器。

如果您使用的是 linux,则需要启用 sendmail 并确保安装 PHP 的用户帐户可以访问 sendmail 二进制文件。

询问您的主机您的帐户是否有足够的权限来访问二进制文件。

在此处发布您的代码也可能会有所帮助,以防您忽略了其中的错误。

【讨论】:

    【解决方案3】:

    您是从自己的计算机发送邮件吗?您可能没有设置可以访问本地域以外的 SMTP 服务器。您也可能被垃圾邮件过滤器阻止,具体取决于您的邮件服务。

    如果您是在自己的计算机上执行此操作,请通过向您的一个本地邮件帐户发送本地消息来测试它(如果您使用的是 Linux)。如果您认为这是问题所在,请安装 postfix。

    如果您是通过托管服务进行的,请检查您的垃圾邮件文件夹。

    【讨论】:

    • 我从我的网站发送它。它绝对不会进入我的垃圾邮件文件夹。我会与我的主人核实任何信息。
    • *“网站”是指托管在线网站,而不是我的计算机。
    【解决方案4】:

    我知道它并没有专门回答您的问题,但我的建议是使用 swiftmailer 之类的东西而不是 mail()。它更加可靠,无论是在上班还是通过邮件方面。

    【讨论】:

      【解决方案5】:

      在 Unix 系统上,mail() 使用 sendmail,并且有很多原因(权限、配置错误)可能会失败。我不确定 PHP 是否会检测并报告所有这些。检查 sendmail 中的所有日志。

      您还应该查看发送邮件的助手,来自 例如PEARZend

      【讨论】:

        【解决方案6】:

        在某些服务器上,您需要明确设置 FROM 标头,否则将不会发送。

        【讨论】:

          【解决方案7】:

          Goat,如果您尝试使用该功能的服务器位于动态外部 IP 上,那么您就是 SOL。大多数邮件服务器现在阻止来自动态 IP 范围的端口 25 上的传入连接。 :(

          【讨论】:

            【解决方案8】:

            它是共享主机吗?我知道有些公司会覆盖邮件功能以避免垃圾邮件,并需要额外的参数或一些预定义的值(例如 from 字段必须是您域名中的有效地址)。您可能需要咨询您的网络托管公司。您是否有可以尝试相同代码的私人设置?

            【讨论】:

              【解决方案9】:

              您的提供商的邮件服务器可能被禁止。检查 dns 黑名单或联系您的托管服务提供商。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2022-12-09
                • 2011-09-02
                • 1970-01-01
                • 2013-11-09
                • 2011-10-02
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多