WordPress 默认使用 PHP 的 mail()
函数发送邮件,但这种方式可靠性较低,邮件可能被标记为垃圾邮件或无法送达。通过 SMTP(简单邮件传输协议),你可以利用专业邮件服务(如阿里云企业邮箱、Gmail、QQ 邮箱等)发送邮件,提高送达率。本教程将指导你通过代码修改,在不使用插件的情况下为 WordPress 配置 SMTP 邮件发送功能,适用于任何支持 SMTP 的邮箱。
为什么选择 SMTP?
- 高送达率:SMTP 使用专业邮件服务器,减少邮件被标记为垃圾邮件的概率。
- 灵活性:支持各种邮箱服务(如阿里云、Gmail、QQ 邮箱等)。
- 安全性:通过 SSL/TLS 加密确保邮件传输安全。
- 无插件:通过代码实现,减少对第三方插件的依赖,降低损耗。
前提条件
- WordPress 网站已正常运行。
- 拥有支持 SMTP 的邮箱账户及其 SMTP 配置信息(主机、端口、用户名、密码等)。
- 服务器支持 SMTP 连接(端口 25、465 或 587 未被防火墙阻止)。
- 网站PHP 的
openssl
扩展已启用(用于 SSL/TLS 加密)。 - 具备编辑 WordPress 文件的权限(通过 FTP 或服务器文件管理器)。
步骤 1:配置 SMTP 参数,通用代码!
- 编辑你网站主题下的 functions.php 文件:
- 登录服务器,找到当前主题目录(通常位于 wp-content/themes/你的主题名称/)。
- 打开 functions.php 文件在后面添加下方代码。
- 下方需要修改成你自己发件人信息的地方,老王已经用红色标注出来了!
- 添加 SMTP 配置代码: 在 functions.php 文件末尾添加适合你邮箱服务的代码。通用模板如下:
add_action('phpmailer_init', 'mail_smtp');
function mail_smtp($phpmailer) {
$phpmailer->isSMTP(); // 启用 SMTP 模式
$phpmailer->Host = 'smtp.example.com'; // 替换为 SMTP 主机地址
$phpmailer->Port = 465; // 替换为端口号(465、587 或 25)
$phpmailer->SMTPSecure = 'ssl'; // 替换为加密方式(ssl 或 tls)
$phpmailer->SMTPAuth = true; // 启用 SMTP 认证
$phpmailer->Username = 'your-email@your-domain.com'; // 替换为邮箱地址
$phpmailer->Password = 'your-email-password'; // 替换为邮箱密码
$phpmailer->From = 'your-email@your-domain.com'; // 替换为发件人邮箱
$phpmailer->FromName = 'Your Brand Name'; // 替换为发件人名称
}
步骤 2:其他邮箱服务代码
以下是为常见邮箱服务提供的完整 SMTP 配置代码,直接复制到 functions.php
文件末尾,并替换用户名、密码smtp地址,端口加密方式和昵称名称。
阿里云企业邮箱
add_action('phpmailer_init', 'mail_smtp');
function mail_smtp($phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.qiye.aliyun.com'; // SMTP服务地址
$phpmailer->Port = 465;
$phpmailer->SMTPSecure = 'ssl';
$phpmailer->SMTPAuth = true;
$phpmailer->Username = 'your-email@your-domain.com'; // 替换为你的邮箱
$phpmailer->Password = 'your-email-password'; // 替换为邮箱密码
$phpmailer->From = 'your-email@your-domain.com'; // 与 Username 一致
$phpmailer->FromName = 'Your Brand Name'; // 替换自定义发件人昵称
}
注意:
- 登录阿里云邮箱管理后台,确认 SMTP 主机(
smtp.qiye.aliyun.com
)。 - 确保
From
邮箱与Username
一致。
Gmail
add_action('phpmailer_init', 'mail_smtp');
function mail_smtp($phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.gmail.com';
$phpmailer->Port = 587;
$phpmailer->SMTPSecure = 'tls';
$phpmailer->SMTPAuth = true;
$phpmailer->Username = 'your-email@gmail.com'; // 替换为你的 Gmail 邮箱
$phpmailer->Password = 'your-app-password'; // 替换为应用专用密码
$phpmailer->From = 'your-email@gmail.com'; // 与 Username 一致
$phpmailer->FromName = 'Your Brand Name'; // 替换为品牌名
}
注意:
- 需启用 Google 账户的两步验证。
- 在 Google 账户 > 安全 > 应用专用密码 生成密码,替换
your-app-password
。
QQ 邮箱
add_action('phpmailer_init', 'mail_smtp');
function mail_smtp($phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.qq.com';
$phpmailer->Port = 465;
$phpmailer->SMTPSecure = 'ssl';
$phpmailer->SMTPAuth = true;
$phpmailer->Username = 'your-qq-number@qq.com'; // 替换为你的 QQ 邮箱
$phpmailer->Password = 'your-authorization-code'; // 替换为授权码
$phpmailer->From = 'your-qq-number@qq.com'; // 与 Username 一致
$phpmailer->FromName = 'Your Brand Name'; // 替换为品牌名
}
注意:
- 登录 QQ 邮箱网页版,进入 设置 > 账户 > POP3/IMAP/SMTP 服务,启用 SMTP 并生成授权码。
- 使用授权码替换
your-authorization-code
。
网易邮箱(163.com)
add_action('phpmailer_init', 'mail_smtp');
function mail_smtp($phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.163.com';
$phpmailer->Port = 465;
$phpmailer->SMTPSecure = 'ssl';
$phpmailer->SMTPAuth = true;
$phpmailer->Username = 'your-email@163.com'; // 替换为你的 163 邮箱
$phpmailer->Password = 'your-password-or-auth-code'; // 替换为密码或授权码
$phpmailer->From = 'your-email@163.com'; // 与 Username 一致
$phpmailer->FromName = 'Your Brand Name'; // 替换为品牌名
}
注意:
- 登录 163 邮箱网页版,进入 设置 > POP3/SMTP/IMAP,启用 SMTP 服务。
- 如果要求授权码,生成并使用授权码替换
your-password-or-auth-code
。
步骤 4:测试 SMTP 配置
为验证 SMTP 配置是否正常,添加上面代码后,在后面添加上下方的测试代码,测试是否可以正常发送,测试代码:
- 添加测试代码:
add_action('init', function() {
if (isset($_GET['test_smtp']) && current_user_can('manage_options')) {
$to = 'test-recipient@example.com'; // 替换为测试接收邮箱
$subject = 'Test Email from WordPress';
$message = 'This is a test email sent via SMTP from WordPress.';
$sent = wp_mail($to, $subject, $message);
if ($sent) {
wp_die('Test email sent successfully!');
} else {
wp_die('Failed to send test email.');
}
}
});
- 运行测试:
- 保存
functions.php
。 - 登录 WordPress 后台(需管理员权限)。
- 访问
https://your-site.com/?test_smtp=1
地址换成你自己的 - 访问后系统会提示发送测试成功或者失败,如果成功即可收到测试邮件!
- 检查目标邮箱是否收到邮件,并查看页面提示。
- 保存
- 删除测试代码:
测试完成后,移除测试代码以避免安全风险。
注意事项
- 服务器环境:
- 确保你网站服务器支持 SMTP 端口(25、465、587)。
- 检查 PHP 的
openssl
扩展:<?php phpinfo(); ?>
确认OpenSSL support
为enabled
。
- DNS 配置:
- 配置域名的 SPF、DKIM 和 DMARC 记录以提高送达率。例如,阿里云的 SPF 记录:
v=spf1 include:spf.mxhichina.com -all
- 参考邮箱服务商文档设置。
- 配置域名的 SPF、DKIM 和 DMARC 记录以提高送达率。例如,阿里云的 SPF 记录:
- 邮箱限制:
- 某些服务要求
From
邮箱与Username
一致。 - 部分邮箱需启用 SMTP 或生成授权码(如 Gmail、QQ 邮箱)。
- 某些服务要求
总结
通过以上步骤,你可以在 WordPress 中不使用插件启用 SMTP 邮件发送功能,适配任何支持 SMTP 的域名邮箱。选择适合你的邮箱服务代码,替换参数,测试配置,并优化安全性。以下是关键点:
- 使用
functions.php
配置 PHPMailer。 - 根据邮箱服务商调整
Host
、Port
、SMTPSecure
等参数。 - 在
wp-config.php
存储敏感信息。 - 测试和调试以确保正常运行。
如果遇到问题:
- 查看调试日志。
- 联系邮箱服务商确认 SMTP 参数。
- 在评论区留言,老王会回复你!