【问题标题】:php mail() function not workingphp mail()函数不起作用
【发布时间】:2011-07-18 19:25:37
【问题描述】:

我从 PHPMailer 收到“无法实例化邮件功能”错误。通过阅读,我理解这意味着 PHP mail() 函数由于某种原因无法正常工作。

邮件设置的phpinfo()结果是:

对我来说,这意味着 mail() 应该可以工作并且端口 25 是打开的。对吗?

请问还有什么我可以检查的吗?我查看了 mail() 函数的文档,但看不到它抛出了哪些异常以及如何将它们打印到屏幕上。我做了一个:

mail('name@email.com', "test", "test") or die("Doesn't work");

类型测试,但这是我的错误信息,我可以做一些更有帮助的事情。

感谢您对此提供的任何帮助。

非常感谢

【问题讨论】:

    标签: php email phpmailer


    【解决方案1】:

    这并不意味着端口 25 是开放的,它只是意味着 PHP 应该使用端口 25 来联系 SMTP 服务器。您没有说明您使用的是什么操作系统,但请注意 sendmail 仅适用于 unix,如果您使用的是 Windows,则会失败。

    【讨论】:

    • 为您的回复干杯,我正在运行 Centos 5.5。
    【解决方案2】:

    该列表仅显示您当前的设置。这并不意味着他们是对的。 :)

    您的本地主机可能未配置为邮件服务器。将 smtp 服务器设置为可以从 PHP 服务器访问的真实服务器。

    【讨论】:

    • 那么,SMTP 的值应该是一个 SMTP 服务器(我认为它是一种邮件服务器)?那么,如果我在某个地方有一个电子邮件帐户,我可以使用它吗?还是我的机器上必须有一个 SMTP 服务器?
    • SMTP 是发送邮件的协议。 POP 是接收邮件的协议(还有其他协议,但让我们保持简单)。许多服务提供 POP 服务,但不提供 SMTP 服务。您通常通过 ISP 获得 SMTP。 SMTP 服务器通常是 smtp.yourisp.com 或 mail.yourisp.com。如果您通过该 ISP 连接,您通常只能使用该服务器。因此,如果您的服务器在本地网络上运行,请使用 ISP 提供的 SMTP 服务器。如果它在托管公司运行,请联系他们以查看他们是否提供此服务并找出问题所在。
    【解决方案3】:

    我可能还差得远,但请检查一下 sendmail 是否已安装,也许它有故障。这取决于您的操作系统。

    【讨论】:

      【解决方案4】:

      phpinfo() 的设置显示 PHP 设置为使用 SMTP,但这并不意味着您在机器上设置了 SMTP 服务器。您的错误消息表明未设置一个。

      祝你好运

      【讨论】:

        【解决方案5】:

        我的回答是——不要通过调用 Sendmail 来发送电子邮件。 sendmail 方法(或任何本地方法)是一大堆陷阱……即使您解决了这些问题,底线是许多垃圾邮件过滤器(在您发送邮件的地方)根本不喜欢这种类型的邮件.

        为了详细说明为什么 sendmail 方法不好,您的 sendmail 守护程序不太可能配置为具有与您的 IP 地址的反向 DNS 匹配的 SMTP HELO。您的网络服务器不太可能具有与标准主机名匹配的有效反向 DNS。没有反向 DNS 是不好的,就像 123-123-123-123-static.someisp.com 这样的 rdns。例如,SpamAssassing 将标记此类“未配置或默认反向 DNS”主机。

        幸运的是,您不需要理解或修复我刚才所说的所有内容。更简单的完成(并且更容易测试/调试)是通过工作的 SMTP 邮件服务器网关您的电子邮件。为此:

        1a) 安装 PHPMailer http://phpmailer.worxware.com/ ... 或 1b) 安装 PEAR Mail() 库http://pear.php.net/package/Mail

        1a 或 1b 将替换 PHP 中有限的“mail()”函数。这些替代品同时支持 SMTP 和 Authenticated SMTP。

        2) 我建议在普通 SMTP 上使用经过身份验证的 SMTP。两者都可以,但是使用经过身份验证的 SMTP,您可以从字面上通过另一个邮件服务器发送邮件,就像您的脚本是 Outlook 等本地电子邮件客户端一样。这有很大的好处。例如,如果您是一家发送邮件的公司,您的邮件更有可能受到远程/目标邮件服务器的信任,因为您的邮件服务器具有良好的声誉并且(希望)正确的反向 DNS 设置。但是,如果您从网络服务器发起电子邮件,那么您就没有这些(如果您使用共享虚拟主机,您将继承在您的网络服务器 IP 上运行的任何其他站点的电子邮件声誉。)。

        【讨论】:

          猜你喜欢
          • 2014-03-17
          • 2015-02-01
          • 2011-08-15
          • 2015-04-16
          • 1970-01-01
          • 1970-01-01
          • 2012-07-06
          • 2016-06-20
          • 1970-01-01
          相关资源
          最近更新 更多