万网虚拟主机不能使用SMTP发邮件的解决办法
编辑:狂族晨曦 来源:建站分享,WordPress技巧 日期:2015-08-30 阅读: 3,208 次 抢个沙发 百度已收录
最后更新时间:2015-10-10
虽然关于万网的虚拟主机无法使用SMTP发邮件的解决方法,已经有很多站长分享过了,但是我还是觉得应该再分享一下,让自己的网站更有用一些。
大多数虚拟主机如万网等都禁用了WordPress默认使用的PHP mail()发信函数,那么唯一的选择就是SMTP发信了,当然SMTP发信的好处是基本不会被邮件服务商归类为垃圾邮件(这里提一下,阿里云还是容易将评论回复提醒的邮件标记为垃圾邮件,导致邮件无法正常发出,解决办法就是将阿里云退信的附件.eml文件,通过提交工单,让阿里程序员解决,之后就不会再标记为垃圾邮件了。)。
由于stream_socket_client函数同样被禁用,导致无法通过WordPress的SMTP接口发信,只能通过fsockopen函数来发信了。
首先,要将主机的fsockopen函数开启:
然后,打开wp-includes/class-smtp.php文件,大约202行找到:
$this->smtp_conn = @stream_socket_client( $host . ":" . $port, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $socket_context );
将上述代码改为以下代码:
/* 屏蔽默认的发送邮件方式 $this->smtp_conn = @stream_socket_client( $host . ":" . $port, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $socket_context ); */ //fsockopen方式 $this->smtp_conn = fsockopen($host, $port, $errno, $errstr);
如此,就可以使用SMTP插件发送邮件,注意的是尽量选择SSL加密发信方式。
PS:WordPress 4.3官方版本好像已经修改了以上代码,使得不用再去进行上面的步骤了。现在4.3版本中,代码已经变成了以下内容:
if ($streamok) { $socket_context = stream_context_create($options); //Suppress errors; connection failures are handled at a higher level $this->smtp_conn = @stream_socket_client( $host . ":" . $port, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $socket_context ); } else { //Fall back to fsockopen which should work in more places, but is missing some features $this->edebug( "Connection: stream_socket_client not available, falling back to fsockopen", self::DEBUG_CONNECTION ); $this->smtp_conn = fsockopen( $host, $port, $errno, $errstr, $timeout ); }
历史上的今天:
本文参考自:http://jerry.weighingproduct.com/wordpress/netcn-smtp-fail/,由狂族晨曦(capjsj.cn)整理编辑,本文共1898个字。
本文链接地址:https://www.capjsj.cn/wwxnzjbnsysmtpfyjdjjbf.html , 转载请保留本说明!
本文链接地址:https://www.capjsj.cn/wwxnzjbnsysmtpfyjdjjbf.html , 转载请保留本说明!
相关文章
已有 0 位"计工"发布了激烈的评论,还有N多人围观笑而不语评论