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

标签: php邮箱
2015-11-27 13:58 879人阅读 评论(0) 收藏 举报
php网站在服务器上邮件发送不了,在本地可以 分类:
php(2) php网站在服务器上邮件发送不了,在本地可以

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

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

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

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

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

  1. $this->smtp_conn = @fsockopen( $host,    // the host of the server  
  2.                                   $port,    // the port to use  
  3.                                   $errno,   // error number if any  
  4.                                   $errstr,  // error message if any  
  5.                                   $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函数被关闭了。

阿里云主机设置:


fsockopen函数
您是想问
Linux 系统云虚拟主机 PHP.ini设置
问题场景:

使用虚拟主机过程中,客户经常需要开启相关函数和设置环境参数,该操作客户可以自行完成。

操作方法:

登录到 主机管理控制台 > 高级环境设置 ,即可显示您需要修改的函数和环境参数。选择后,单击 保存设置 即可。

如下截图:

17.png

如问题还未解决,请联系售后技术支持

阿里云:会员中心--》左侧的虚拟机--》选中虚拟机--》高级环境配置---》php.ini配置

原文地址:https://www.cnblogs.com/lxwphp/p/15455386.html