为什么需要配置 SMTP 邮件功能?
SMTP 邮件功能在 WordPress 中是一个很常用的功能,例如:网站用户注册、登录验证、评论回复通知等场景。虽然 WordPress 自带了 PHP 的 mail() 函数,但使用该函数发送邮件很容易失败或被邮件服务器拒收。
此外,目前很多虚拟主机服务商出于安全和稳定性考虑,默认禁用了 PHP 的 mail() 函数。因此,使用专业的 SMTP 服务来发送邮件是更可靠的选择。网上有很多 WordPress SMTP 插件,但本文分享一种无需插件、纯代码实现 SMTP 邮件发送的方法。
配置步骤
请将下面的代码修改后,复制到你当前使用的 WordPress 主题的 functions.php 文件末尾,然后测试邮件发送功能。
// WordPress 免插件配置 SMTP 邮件
function mail_smtp( $phpmailer ) {
// 发件人名称
$phpmailer->FromName = '你的网站名称';
// 修改为你使用的邮箱 SMTP 服务器地址
$phpmailer->Host = 'smtp.qq.com';
// SMTP 端口
$phpmailer->Port = 465;
// 邮箱账户
$phpmailer->Username = 'your-email@qq.com';
// 邮箱授权码(此处填写 QQ 邮箱生成的授权码,非登录密码)
$phpmailer->Password = 'your-authorization-code';
// 发件人邮箱地址,通常与 Username 一致
$phpmailer->From = 'your-email@qq.com';
// 启用 SMTP 认证
$phpmailer->SMTPAuth = true;
// 加密方式:tls 或 ssl (端口为 25 时留空,端口为 465 时使用 ssl)
$phpmailer->SMTPSecure = 'ssl';
// 声明使用 SMTP 发送邮件
$phpmailer->IsSMTP();
}
add_action('phpmailer_init', 'mail_smtp');
代码说明与注意事项
- 参数修改:你需要将代码中的示例值(如邮箱地址、授权码、发件人名称)替换为你自己的真实信息。
- SMTP 服务器与端口:示例使用的是 QQ 邮箱的 SMTP 服务(
smtp.qq.com,端口465)。如果你使用其他邮箱服务(如 Gmail、163、企业邮箱),请查询对应服务商提供的 SMTP 服务器地址和端口号。 - 授权码:
Password字段应填写邮箱服务商提供的 SMTP 授权码(或专用密码),而不是你的邮箱登录密码。以 QQ 邮箱为例,需要在“设置”->“账户”中生成授权码。 - 加密方式:
SMTPSecure需与Port匹配。常见组合为:端口 465 对应ssl,端口 587 对应tls,端口 25 通常不加密(留空或设为'')。
测试与验证
将代码正确添加到 functions.php 文件后,理论上配置已经生效。你可以通过以下方式测试邮件是否发送成功:
- 使用 WordPress 的“忘记密码”功能,向你的邮箱发送重置链接。
- 安装“WP Mail SMTP”或“Check & Log Email”等插件,它们通常提供邮件发送测试功能。
- 如果你熟悉代码,可以在主题文件中临时添加一个调用
wp_mail()函数的测试代码。
如果测试失败,请检查:1) 代码是否有语法错误;2) SMTP 服务器、端口、加密方式是否匹配;3) 邮箱账户和授权码是否正确;4) 服务器防火墙是否允许外发 SMTP 连接。