有的時候做網站的程序為了配合網站主機的需要(比如萬網的主機,只支持fsockopen發郵件),我們需要讓WordPress使用fsockopen函數來發送郵件。WordPress默認并不是使用這種方式,我們可以通過修改代碼實現。
在wp-includes文件夾中,找到class-smtp.php文件,打開,大概在200多行的樣子,按照如下說明修改:
// Connect to the SMTP server
$errno = 0;
$errstr = '';
$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
);*/
$this->smtp_conn = fsockopen($host, $port, $errno, $errstr);
以上代碼實際上就是將WordPress默認的SMTP鏈接方式,修改成使用fsockopen方式。
不過,有個問題需要注意,以上修改實際上是對WordPress內核代碼進行修改,在每次升級WordPress內核之后,這個修改會丟失。暫時還沒有找到辦法一勞永逸地解決這個問題。