linux空间使用smtp类无法发送邮件解决方法

偶然发现我网站后台自动发送邮件功能不能用了,报这个错误:

Trying to smtp.126.com:25 Error: Cannot connenct to relay host smtp.126.com Error: () Error: Cannot send email to web@daixiaorui.com state

大概意思是:无法connenct中继主机smtp.126.com 错误:()错误:无法发送电子邮件给web@daixiaorui.com

我很好奇,网站一直没动啊。为了排除问题,把最近备份的恢复一些关键的文件后还是不能成功发送邮件。然后我把smtp类和与发送邮件相关的核心文件、代码弄到本地运行了一下,非常成功。现在我开始怀疑这肯定就是linux空间配置的问题了,上次月新换了一个linux的空间,估计问题就出在这里。(PS:有兴趣的,可以看看 php利用smtp类轻松的发送电子邮件 )

上网找了n多资料后终于找到了解决方案,不是smtp类的问题,而就是linux配置的问题。原来是服务器的php.ini 禁用了fsockopen函数。

打开空间下的php.ini文件,linux空间一般都可以自定义php.ini,所以根目录下面一般会有这个文件。

有两个地方可能禁用此函数:
1. allow_url_fopen = On 查看等于后面是否为 ON,如果为OFF时函数将被禁用
2. disable_functions = fsockopen pfsockopen (我的就是这样)这里应该去掉前面的“fsockopen”。使之变成:disable_functions = pfsockopen

改过之后,保存,再重新刷新页面,就发现在linux下能成功利用smtp类发送电子邮件了。感谢网友分享的方法,问题终于得到了解决。