解決萬網主機下 WordPress 無法發送郵件的問題

不少朋友一直都在問萬網主機下 WordPress 無法發送郵件,其實在WordPress大學的問答中心, Jerry8yuan 給出瞭解決方案,下面簡單整理一下,方便後面的朋友。

萬網的主機貌似都需要通過 SMTP 來發送郵件,而且要開啟 fsockopen(在萬網後臺可以開啟,不會的請聯系萬網客服) 。但是 WordPress 的 SMTP 發送方式為 steam_connect_client 而非fsockopen,所以,打開 /wp-include/class-smtp.php 大概是 274-282 行的位置,查找到下面的代碼:

1
2
3
4
5
6
7
8
9
$socket_context = stream_context_create($options);
$this->smtp_conn = @stream_socket_client(
$host . ":" . $port,
$errno,
$errstr,
$timeout,
STREAM_CLIENT_CONNECT,
$socket_context
);

$socket_context = stream_context_create($options);
$this->smtp_conn = @stream_socket_client(
$host . ":" . $port,
$errno,
$errstr,
$timeout,
STREAM_CLIENT_CONNECT,
$socket_context
);

修改為如下代碼:

1
$this->smtp_conn = @fsockopen($host,$port,$errno,$errstr,$timeout);

$this->smtp_conn = @fsockopen($host,$port,$errno,$errstr,$timeout);

然後使用 WP SMTP 或 WP MAIL SMTP 這類 SMTP 發送郵件的外掛,配置好一般就可以瞭。

特別註意:由於這個方法是直接修改瞭 WordPress 的核心代碼,一旦升級瞭 WordPress 版本,就需要重新進行修改,請務必記得!!!

發佈留言