php网站在服务器上邮件发送不了,在本地可以

最近在做phpmailer发送邮件功能里发现了一个问题,网站程序在本地测试邮件可以正常发送到指定的邮箱。

但是把代码放到空间上面,邮件发不了,提示发送出错!研究半天没有搞懂为什么 ……(高手勿喷)

后来上网找了一下,有人说是服务器商因为安全原因把php 的 fsockopen 函数给关闭了。

于是按照网上的解决方法把fsockopen函数替换了,方法如下:

首先找到 phpmailer 的 class.stmp.php文件:

$this->smtp_conn = @fsockopen( $host,    // the host of the server
                                  $port,    // the port to use
                                  $errno,   // error number if any
                                  $errstr,  // error message if any
                                  $tval);   // give up after ? secs

把“ @fsockopen”改为“@stream_socket_client”(注意两个函数的参数是不一样的)

1
2
3
4
$this ->smtp_conn = @stream_socket_client(  $host .’:’. $port ,     // the host of the server
                                   $errno ,    // error number if any
                                   $errstr ,   // error message if any
                                   $tval );    // give up after ? secs

这里 PHP版本应高于 5.0 的,因为较早版本没有stream_socket_client()函数的。

另外如果服务器商没有把pfsockopen函数关闭的话也可以使用这个函数替换,这个函数的写法跟“fsockopen”是一样的,所以这里就不贴代码了。

提醒一下如果你是使用的万网的主机可以自己主机管理里面的高级设置中看一下是不是fsockopen函数被关闭了。


你可能感兴趣的:(php,php,邮箱)