萬網虛擬主機不能使用SMTP發郵件的解決辦法
編輯:狂族晨曦 來源:建站分享,WordPress技巧 日期:2015-08-30 閱讀: 3,449 次 搶個沙發 百度已收錄
最后更新時間: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個字。
本文鏈接地址:http://www.cnidcc.cn/wwxnzjbnsysmtpfyjdjjbf.html , 轉載請保留本說明!
本文鏈接地址:http://www.cnidcc.cn/wwxnzjbnsysmtpfyjdjjbf.html , 轉載請保留本說明!
相關文章
已有 0 位"計工"發布了激烈的評論,還有N多人圍觀笑而不語評論

川公網安備 51011202000104號