【整理】PHP邮件发送常见问题合集

作者Veris 文章分类 分类:PHP 文章评论 0条评论 阅读次数 已被围观 2509

【被禁用了相关发信函数的解决方案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端口发送,但实话说,很多这方面的邮箱的可信度并不高,或者有比较严格的发件数量限制,导致发送出去的邮件很大程度进入垃圾箱,或者直接被黑名单了。

分类:PHP
标签: PHP邮件 PHPMailer

发表评论: