You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WP Mail SMTP搭配Gmail频繁断开,如何自动检测连接有效性?

自动检测WP Mail SMTP-Gmail连接状态并触发通知方案

一、自定义WordPress代码实现检测与通知

1. 核心实现思路

利用WP Mail SMTP插件的内置函数检测Gmail邮件器的连接状态,通过WordPress定时任务定期执行检查,一旦发现连接断开,立即发送告警邮件到备用邮箱。

2. 完整代码示例

将以下代码添加到主题的functions.php文件,或使用自定义代码插件(如Code Snippets):

// 初始化定时检测任务
add_action('wp_loaded', 'setup_gmail_smtp_check_cron');
function setup_gmail_smtp_check_cron() {
    if (!wp_next_scheduled('gmail_smtp_connection_check_hook')) {
        // 每小时执行一次检测,可根据需求改为twicedaily/daily
        wp_schedule_event(time(), 'hourly', 'gmail_smtp_connection_check_hook');
    }
}

// 执行连接检测并发送告警
add_action('gmail_smtp_connection_check_hook', 'check_and_alert_gmail_connection');
function check_and_alert_gmail_connection() {
    // 确认WP Mail SMTP插件已加载
    if (!function_exists('wp_mail_smtp')) return;

    $mailer = wp_mail_smtp()->get_mailer();
    // 仅针对Gmail邮件器进行检测
    if ($mailer instanceof WP_Mail_SMTP\Mailers\Gmail && !$mailer->is_connected()) {
        $alert_email = 'your-backup-email@example.com'; // 替换为你的备用告警邮箱
        $site_name = get_bloginfo('name');
        $site_url = get_bloginfo('url');

        $subject = "[{$site_name}] WP Mail SMTP-Gmail连接已断开";
        $message = "站点:{$site_url}\nWP Mail SMTP与Gmail的连接已中断,请尽快登录后台重新建立连接。";

        // 使用WordPress原生邮件发送(确保服务器自带邮件功能可用,或配置了备用SMTP)
        wp_mail($alert_email, $subject, $message);
    }
}

3. 注意事项

  • 务必将your-backup-email@example.com替换为非Gmail的备用邮箱(比如企业邮箱、Outlook邮箱),避免因Gmail故障导致告警无法发送
  • 若服务器禁用了WP Cron,需手动在服务器设置系统级Cron任务,定时访问https://你的域名/wp-cron.php触发检测
  • 建议使用Code Snippets插件管理自定义代码,避免主题更新导致代码丢失

二、辅助优化建议

  • 配置备用邮件器:在WP Mail SMTP中额外设置一个备用邮件器(如SendGrid、Mailgun),当Gmail连接失败时自动切换,保障邮件服务不中断
  • 开启插件日志:在WP Mail SMTP设置中启用日志功能,记录连接失败的具体错误信息,便于排查根本问题(比如令牌过期、权限变更)
  • 监控Google Cloud应用:定期登录Google Cloud控制台,检查OAuth客户端ID的状态,确认是否有异常权限调整或令牌失效情况

内容的提问来源于stack exchange,提问作者amclean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 21:13:10