博客 / WordPress/ WordPress 无插件实现 SMTP 邮件发送:两种纯代码方法详解

WordPress 无插件实现 SMTP 邮件发送:两种纯代码方法详解

WordPress 无插件实现 SMTP 邮件发送:两种纯代码方法详解

前言

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。

  1. 找到文件 wp-includes/class-phpmailer.php(或高版本中的 wp-includes/class-smtp.php 等相关文件)。
  2. 在类定义中找到公共属性,并修改其默认值:
    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 等插件或联系表单测试邮件发送功能是否正常。

  1. 但是第一次发送邮件时候,格式很固定,应该怎么修改?

    1. 修改代码中邮件内容的部分

发表评论

您的邮箱不会公开。必填项已用 * 标注。