php无法正常发送邮件

今天在调试网站的时候,发现用户找回密码的功能,不能正常的发送新密码到用户的注册邮箱。


但是,相同的代码在本地调试环境中就是正常的,在远程服务器上就是不行。


最后定位出来的问题是:



空间服务商,在php.ini中默认把PHP函数fsockopen给禁用了,启动之后,就可以正常运行发送邮件的功能。


我用的是email.class.php类文件。


function smtp_sockopen_relay()
{

<span style="white-space:pre">	</span>$this->log_write("Trying to ".$this->relay_host.":".$this->smtp_port."\n");

<span style="white-space:pre">	</span>$this->sock = @fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out);

<span style="white-space:pre">	</span>if (!($this->sock && $this->smtp_ok())) {

<span style="white-space:pre">	</span>$this->log_write("Error: Cannot connenct to relay host ".$this->relay_host."\n");

<span style="white-space:pre">	</span>$this->log_write("Error: ".$errstr." (".$errno.")\n");

<span style="white-space:pre">	</span>return FALSE;

}


可以定位到这段代码中需要fsockopen函数,但是缺加了@屏蔽其错误提示,所以导致没有看到明显的错误提示。


问题解决的一些感悟,需要看看调用的其他类中是否用到了某些系统函数,但是却被空间商默认给关闭的?


阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页