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

在WordPress中如何判断收件人是否打开了已发送的邮件?

WordPress邮件打开追踪状态不更新解决方案

核心问题原因

你当前的追踪像素URL不符合WordPress路由规则:admin.php的page参数仅支持后台预先注册的菜单别名,直接传入track.php无法触发对应的状态更新逻辑。

分步修复方案

1. 修正追踪像素请求路径(二选一即可)

方案A:使用WordPress标准AJAX接口(推荐)

  • 首先在主题functions.php或自定义插件中添加全局可访问的AJAX处理逻辑:
// 登录、未登录用户都可触发追踪回调
add_action('wp_ajax_nopriv_track_email_open', 'track_email_open_callback');
add_action('wp_ajax_track_email_open', 'track_email_open_callback');
function track_email_open_callback() {
    global $wpdb;
    $track_code = isset($_GET['track_code']) ? sanitize_text_field($_GET['track_code']) : '';
    if ($track_code) {
        // 替换为你自己的邮件表名、状态字段名
        $wpdb->update(
            $wpdb->prefix . 'your_email_table',
            ['status' => 'opened'],
            ['track_code' => $track_code]
        );
    }
    // 返回1像素透明图片
    header('Content-Type: image/gif');
    echo base64_decode('R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7');
    exit;
}
  • 修改邮件发送页的像素地址:
$track_code = md5(rand());
// 发送前先把track_code存入你的邮件表,对应本条邮件记录
$wpdb->insert($wpdb->prefix.'your_email_table', [
    'cust_name' => $cust_name,
    'track_code' => $track_code,
    'status' => 'sent',
    // 其他你需要存的字段
]);

$mail->Subject = 'You have a new quote';
// 替换为WP AJAX地址
$message .='<img src="https://oqdemo.com/quotesystem/wp-admin/admin-ajax.php?action=track_email_open&track_code='.$track_code.'" style="width:1px;height:1px;" alt="" />';
$message .='<h1>Hello,'.$cust_name.'</h1>';

方案B:直接调用独立track.php文件

  • 将track.php放在WordPress站点根目录,开头引入WP核心文件以支持数据库操作:
<?php
require_once dirname(__FILE__) . '/wp-load.php';
global $wpdb;
$track_code = isset($_GET['track_code']) ? sanitize_text_field($_GET['track_code']) : '';
if ($track_code) {
    $wpdb->update(
        $wpdb->prefix . 'your_email_table',
        ['status' => 'opened'],
        ['track_code' => $track_code]
    );
}
header('Content-Type: image/gif');
echo base64_decode('R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7');
exit;
?>
  • 修改邮件发送页的像素地址:
$message .='<img src="https://oqdemo.com/quotesystem/track.php?track_code='.$track_code.'" style="width:1px;height:1px;" alt="" />';

2. 其他排查点

  • 发邮件前必须把生成的$track_code提前写入数据库对应邮件记录,否则更新逻辑找不到匹配条目
  • 可在追踪处理逻辑中添加日志记录,确认请求是否正常触发、SQL执行是否报错
  • 主流邮件客户端默认会拦截外部图片,可在邮件正文添加提示引导用户手动显示图片,提升追踪准确率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:57:01