Wordpress主机SMTP发送邮件解决方案
最近一客户同学说换了个主机,发送邮件的部分各种的失败,主机商回应禁用了 PHP mail() 发信函数,而 Wordpress 默认使用的正好是 PHP mail() 函数,可先自行 检测Linux主机是否支持PHP mail() 函数,不然只能选择 SMTP 方案。
一、使用 SMTP 类插件
wordpress SMTP 发信插件很多,在此以老杨用的 WP Mail SMTP 为例,老杨使用的是腾讯QQ的域名邮箱,注意几个参数设置即可。
Mailer: 选择 Send all WordPress emails via SMTP. SMTP Host: 服务器 smtp.qq.com (老杨以QQ域名邮箱为例) SMTP Port: 端口 25 Encryption: 验证方式选 No encryption. 如果选SSL的话,上面端口要填写 465 Authentication: 需要认证 Yes: Use SMTP authentication. Username: 发送邮箱的Email Password: 发送邮件的Email密码,如使用QQ域名邮箱需要填写QQ密码 或 QQ邮箱的独立密码(如有设置)。
二、修改 wordpress 源代码
Wordpress 基于 SMTP 发送邮件时,默认使用 steam_connect_client() 函数,如需使用 fsockopen() 函数的话,则需要做相应的修改。
打开 wp-includes/class-smtp.php 文件,查找如下代码段(约276行):
$this->smtp_conn = @stream_socket_client( $host . ":" . $port, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $socket_context );
将上述代码注释掉,增加以下代码:
$this->smtp_conn = fsockopen($host, $port, $errno, $errstr);
修改源码的方式尽量少用,升级不方便,推荐方案一。