Oct
26
2017
【整理】PHP邮件发送常见问题合集
【被禁用了相关发信函数的解决方案1】
发送邮件出现“不能连接SMTP服务器.”(Error: Could not connect to SMTP host)的原因是fsockopen()被禁用。 由于国内大多数服务器禁用了mail()函数导致wordpress不能发送邮件,而SMTP 插件则是通过PHPmailer连接远程SMTP服务器来发送邮件,如果服务器禁用了fsockopen()函数就会出现上述错误。 下面给出解决方法: 用pfsockopen()函数直接替换掉 fsockopen() 如果pfsockopen函数被禁用的话,换其他可以操作Socket函数来代替, 如stream_socket_client() 找到wp-includes/class.smtp.php 文件,把 @fsockopen 改成 @pfsockopen
$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 // verify we connected properly
改成
$this->smtp_conn = @pfsockopen( $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 // verify we connected properly
【被禁用了相关发信函数的解决方案2】
1、编辑 :/usr/local/php/etc/php.ini,查找:disable_functions ,将里面的 fsockopen 去掉;
2、执行: /etc/init.d/php-fpm restart 重启配置
【被禁用了相关发信端口的解决方案】
阿里云新开通的ECS云服务器已默认封闭 25 邮件发送端口,导致postfix无法发送邮件
所以postfix默认就无法发送邮件了,那么最直接有效的方法就是采用 465 端口发送,也就是只能通过 smtp 方式配置发送了。目前很多邮箱的SMTP都支持465端口发送,但实话说,很多这方面的邮箱的可信度并不高,或者有比较严格的发件数量限制,导致发送出去的邮件很大程度进入垃圾箱,或者直接被黑名单了。
发表评论: