您的位置:首页 > 编程语言 > PHP开发

php无法正常发送邮件

2015-06-08 22:26 691 查看
今天在调试网站的时候,发现用户找回密码的功能,不能正常的发送新密码到用户的注册邮箱。

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

最后定位出来的问题是:



空间服务商,在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函数,但是缺加了@屏蔽其错误提示,所以导致没有看到明显的错误提示。

问题解决的一些感悟,需要看看调用的其他类中是否用到了某些系统函数,但是却被空间商默认给关闭的?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: