php mail()函数无效

时间:2011-07-18 19:25:37

标签: php email phpmailer

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

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

My PHP mail settings

对我而言,这意味着mail()应该正常工作并且端口25是打开的。是吗?

还有什么我能检查才能让这项工作好吗?我查看了mail()函数的文档,但我看不出它抛出了什么异常,以及我如何将它们打印到屏幕上。我做了一个:

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

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

感谢任何帮助。

非常感谢

5 个答案:

答案 0 :(得分:2)

它并不意味着端口25是打开的,它只是意味着PHP应该使用端口25来联系SMTP服务器。你没有说明你所使用的操作系统,但请注意sendmail只是一个unix的东西,如果你在Windows上就会失败。

答案 1 :(得分:0)

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

您的localhost可能未配置为邮件服务器。将smtp服务器设置为真正的服务器,而不是从PHP服务器到达的服务器。

答案 2 :(得分:0)

我可能会离开,但请检查是否安装了sendmail,可能是出现故障。这取决于您的操作系统。

答案 3 :(得分:0)

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

祝你好运

答案 4 :(得分:0)

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

为了详细说明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)我建议使用Authenticated SMTP而不是普通SMTP。这两种方法都有效,但通过经过身份验证的SMTP,您可以通过其他邮件服务器发送邮件,就像您的脚本是Outlook等本地电子邮件客户端一样。这有很大的好处。例如,如果您是发送邮件的公司,则您的邮件更有可能被远程/目标邮件服务器信任,因为您的邮件服务器具有良好的声誉并且(希望)正确的反向DNS设置。但是,如果您从网络服务器发出电子邮件,那么您就没有(如果您使用共享虚拟主机,您将继承您的网络服务器IP上运行的任何其他网站的电子邮件信誉。)。