有的时候做网站的程序为了配合网站主机的需要(比如万网的主机,只支持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内核之后,这个修改会丢失。暂时还没有找到办法一劳永逸地解决这个问题。