最近做一个网站,需要用户注册功能,默认wordpress包含这个功能,后台开启即可。默认需要填写一个邮件地址,注册后,wordpress 会发送一封激活邮件。如果你的系统没有配置邮件服务器,默认发送时一定会失败的。

了解wordpress的邮件发送原理
wordpress 本身时不带邮件服务器的,wordpress 发送邮件依赖 wp_mail 这个wordpress的核心函数。这个函数默认时调用php 中的 mail 函数,而mail 函数依赖你的服务器环境。如果服务器没有邮件服务器,那么就无法发送。
wordpress 内置了 PHPMailer 类,这个php发送邮件的类,github 的星也很多,知名度很高。wp_mail 本质是对 PHPMailer 的轻量封装。
解决方法
通过一个构造实现,在 phpmailer_init 初始化的时候,使用 gmail 或者 qq 等邮箱进行发送邮件即可。
具体操作
首先要搞明白怎么用gmail 或者QQ 通过 stmp 发送邮件,这里用 gmail 为例。
https://www.youxiangmi.com/gmail-stmp.html
在wordpress的 functions.php 中添加一段代码

// gmail 邮件发送
/**
* 配置 WordPress 使用 Gmail SMTP 发送邮件
* 将代码添加到当前主题的 functions.php 文件 或 自定义插件中
*/
function mailtrap_smtp_mailer( $phpmailer ) {
// 如果 PHPMailer 对象不存在,则不进行处理
if ( ! is_object( $phpmailer ) ) {
$phpmailer = (object) $phpmailer;
}
// 设置为使用 SMTP
$phpmailer->isSMTP();
/*** ----- Gmail SMTP 配置信息 (请根据你的情况修改) ----- ***/
// SMTP 主机地址:Gmail 的服务器地址是 smtp.gmail.com [citation:6][citation:10]
$phpmailer->Host = 'smtp.gmail.com';
// SMTP 端口:使用 TLS 加密时用 587,使用 SSL 时用 465 [citation:6][citation:10]
$phpmailer->Port = 587;
// 加密方式:推荐使用 'tls' 或 'ssl' [citation:1][citation:6]
$phpmailer->SMTPSecure = 'tls';
// 启用 SMTP 认证
$phpmailer->SMTPAuth = true;
// SMTP 用户名:你的完整 Gmail 地址 (例如 yourname@gmail.com) [citation:6]
$phpmailer->Username = 'www.wpzhan.com@gmail.com';
// SMTP 密码:这不是你的 Gmail 登录密码!
// 对于开启了两步验证的账号,必须是 16位 的“应用专用密码” [citation:6]
$phpmailer->Password = 'xxxx xxxx xxxx xxxx';
// 设置发件人邮箱和名称 (通常会在这里设置,确保邮件来源一致)
$phpmailer->setFrom( 'www.wpzhan.com@gmail.com', 'www.wpzhan.com' );
/*** ----- 配置结束 ----- ***/
}
// 将上面的函数挂载到 'phpmailer_init' 动作钩子上
// 这个钩子会在每次发送邮件前初始化 PHPMailer 时执行
add_action( 'phpmailer_init', 'mailtrap_smtp_mailer' );
更简单的方式
通过插件的方式,后台可以搜索,按照配置即可。
