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
相关产品推荐
相关产品推荐

