前言
WordPress 默认使用 PHP 的 mail() 函数发送邮件,这种方式依赖服务器配置,且容易因配置不当导致邮件进入垃圾箱或发送失败。使用 SMTP(简单邮件传输协议)发送邮件是更可靠、更专业的解决方案。本文将介绍两种无需安装插件,仅通过添加代码即可实现 SMTP 发送邮件的方法。
方法一:在主题的 functions.php 文件中添加代码(推荐)
这是最常用且安全的方法,通过 WordPress 的 phpmailer_init 钩子来配置 PHPMailer(WordPress 底层使用的邮件库)。将以下代码添加到当前主题的 functions.php 文件末尾。
/**
* 配置 WordPress 使用 SMTP 发送邮件
*/
add_action('phpmailer_init', 'custom_mail_smtp');
function custom_mail_smtp($phpmailer) {
// 启用 SMTP 发送
$phpmailer->isSMTP();
// 启用 SMTP 身份验证
$phpmailer->SMTPAuth = true;
// SMTP 服务器地址(请替换为你的邮箱服务商地址)
$phpmailer->Host = 'smtp.gmail.com';
// SMTP 端口(SSL 常用 465,TLS 常用 587)
$phpmailer->Port = 465;
// 加密协议:'ssl' 或 'tls',对应端口使用
$phpmailer->SMTPSecure = 'ssl';
// 发件人邮箱地址(完整地址)
$phpmailer->Username = 'your-email@gmail.com';
// 发件人邮箱密码或应用专用密码(Gmail 等需开启两步验证后使用)
$phpmailer->Password = 'your-email-password';
// (可选)强制发件人地址与登录用户名一致,避免被服务器拒绝
$phpmailer->setFrom($phpmailer->Username, get_bloginfo('name'));
}
配置说明与注意事项
- 服务器与端口:示例使用 Gmail,其他服务商(如 QQ 邮箱、163 邮箱、企业邮箱)的 SMTP 地址和端口请查阅其官方文档。
- 安全性:Gmail 等邮箱通常要求使用“应用专用密码”而非账户登录密码,请在邮箱设置中生成并替换。
- 调试:如果发送失败,可以在代码中添加
$phpmailer->SMTPDebug = 2;来开启调试模式(仅限测试环境),查看具体错误信息。
方法二:修改 WordPress 核心文件(不推荐)
警告:此方法涉及修改核心文件,WordPress 更新后修改会被覆盖,导致功能失效,因此仅作了解,不推荐在生产环境使用。
此方法通过直接修改 PHPMailer 类的默认属性来全局启用 SMTP。
- 找到文件
wp-includes/class-phpmailer.php(或高版本中的wp-includes/class-smtp.php等相关文件)。 - 在类定义中找到公共属性,并修改其默认值:
public $Mailer = 'smtp'; public $Host = 'smtp.gmail.com'; public $Port = 465; public $SMTPSecure = 'ssl'; public $SMTPAuth = true; public $Username = 'your-email@gmail.com'; public $Password = 'your-email-password';
方法对比与总结
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 方法一(functions.php) | 安全、升级无忧、便于管理 | 需正确配置 SMTP 参数 | 所有场景的首选 |
| 方法二(修改核心) | 一次修改,全局生效 | 升级后失效、风险高、难以维护 | 仅用于临时测试或无法使用钩子的极端情况 |
通用配置参数参考
- QQ 邮箱:
Host: smtp.qq.com,Port: 465,SMTPSecure: ssl,需在邮箱设置中开启 SMTP 服务并获取授权码。 - 163 邮箱:
Host: smtp.163.com,Port: 465,SMTPSecure: ssl。 - 企业邮箱/其他服务:请务必参考服务商提供的官方 SMTP 配置文档。
完成配置后,建议使用 Check Email 等插件或联系表单测试邮件发送功能是否正常。
但是第一次发送邮件时候,格式很固定,应该怎么修改?
修改代码中邮件内容的部分