成航先森 成航先森

成都航院计算机系一个学生的个人博客

 

建站分享

分段图

最新文章

建站分享
当前位置: 首页 » 建站分享 » 万网虚拟主机不能使用SMTP发邮件的解决办法

万网虚拟主机不能使用SMTP发邮件的解决办法

编辑:狂族晨曦 来源:建站分享WordPress技巧 日期:2015-08-30 阅读: 2,581 次 抢个沙发 百度已收录

虽然关于万网的虚拟主机无法使用SMTP发邮件的解决方法,已经有很多站长分享过了,但是我还是觉得应该再分享一下,让自己的网站更有用一些。

大多数虚拟主机如万网等都禁用了WordPress默认使用的PHP mail()发信函数,那么唯一的选择就是SMTP发信了,当然SMTP发信的好处是基本不会被邮件服务商归类为垃圾邮件(这里提一下,阿里云还是容易将评论回复提醒的邮件标记为垃圾邮件,导致邮件无法正常发出,解决办法就是将阿里云退信的附件.eml文件,通过提交工单,让阿里程序员解决,之后就不会再标记为垃圾邮件了。

由于stream_socket_client函数同样被禁用,导致无法通过WordPress的SMTP接口发信,只能通过fsockopen函数来发信了。

首先,要将主机的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个字。
本文链接地址://www.capjsj.cn/wwxnzjbnsysmtpfyjdjjbf.html , 转载请保留本说明!
已有 0 位"计工"发布了激烈的评论,还有N多人围观笑而不语评论
匿名的头像
欢迎发表评论
取消评论

表情
疑问调皮伤心抠鼻黑线微笑可爱奸笑震惊吓到了撇嘴大兵忍不住笑笑狂骂狂怒噢?鼓掌酷⊙﹏⊙b汗鄙视大哭嘿嘿

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
官方微信
发表评论 返回顶部