本站使用的主机由于不支持mail()函数,导致不能正常的发送通知邮件,所以之前使用了WP SMTP这个插件进行邮件的收发。 本着能不用插件就不用的原则…… 我们这次可以将WP SMTP,Configure SMTP以及WP Mail SMTP等一系列smtp邮箱发送方式彻底整合至主题中,实现免插件收发邮件。所以如果你的邮件功能出现异常,可以尝试使用此方法解决。 主机不支持mail()函数解决办法将以下代码添加至functions.php中的 <?php 之后: //smtp发送邮件功能
function mail_smtp( $phpmailer ){
$phpmailer->FromName = '发信名';
$phpmailer->Host = 'smtp.exmail.qq.com';//SMTP服务器地址
$phpmailer->Port = 465;//SMTP服务器端口
$phpmailer->Username = '发信邮箱';
$phpmailer->Password = '密码';
$phpmailer->From = '显示邮箱';
$phpmailer->SMTPAuth = true; //SMTP认证(true/flase)
$phpmailer->SMTPSecure = 'ssl'; //SMTP加密方式tls/ssl/no(port=25留空,465为ssl)
$phpmailer->IsSMTP();
}
add_action( 'phpmailer_init','mail_smtp' );
//smtp发送邮件功能设置完成
其中: - FromName :发信所显示的名字
- Host :SMTP地址,QQ邮箱填写:smtp.qq.com / 腾讯企业邮箱:smtp.exmail.qq.com
- Port :SMTP端口,腾讯企业邮箱为465
- Username :发信邮箱账号
- Password :发信邮箱密码
- From :邮件显示邮箱,这个可以与发信邮箱不同 其余无需修改。
- 查询常用的邮箱服务器(SMTP、POP3)地址、端口 点击前往
我的设置如下图所示,可参照我的设置自行修改即可:
万网虚拟主机邮件发送解决办法万网称:因为WordPress程序使用的不是fsockopen函数发信,而是使用stream_socket_client函数发信,但是PHP函数在万网主机虚拟主机中被禁用了,所以导致发信失败。 如果你使用的是万网主机,那除了在functions.php文件中添加以上代码外,还需要找到文件/wp-includes/class-smtp.php,做以下修改:
将如下代码: $this->smtp_conn = @stream_socket_client(
$host . ":" . $port,
$errno,
$errstr,
$timeout,
STREAM_CLIENT_CONNECT,
$socket_context
);
修改为: $this->smtp_conn = fsockopen($host, $port, $errno, $errstr, $timeout);
阿里云万网主机的同学,如果有添加以上修改后还是不能发送邮件的,请确认主机管理控制台:高级环境设置->php.ini参数设置->PHP函数fsockopen设置是否启用。禁用的,改为启用。
即可。以上。
|