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

如何使用Google API Client区分回复邮件与普通邮件?(基于邮件列表获取场景)

判断Gmail邮件是否为回复邮件(PHP Google API Client)

嘿,我来帮你搞定这个问题!要区分回复邮件和普通邮件,核心得靠Gmail邮件头里的特定字段——这是最准确的判断方式,比看主题里的「Re:」靠谱多了。下面一步步来拆解:

1. 先获取单封邮件的完整详情

你现在用listUsersMessages拿到的只是邮件的ID和线程ID,没有包含判断所需的邮件头信息。所以得循环遍历你的$messageList,调用users_messages->get方法获取每封邮件的完整数据(记得指定format参数来拿到邮件头)。

示例代码:

foreach ($messageList as $message) {
    // 获取完整邮件数据,指定format为'full'以包含邮件头
    $fullMessage = $service->users_messages->get('sender@mail.com', $message->getId(), ['format' => 'full']);
    
    // 提取邮件头信息
    $headers = $fullMessage->getPayload()->getHeaders();
    
    // 接下来判断是否为回复邮件...
}

2. 检查邮件头里的关键字段

Gmail里的回复邮件会包含以下两个邮件头字段之一(或两者都有):

  • In-Reply-To: 直接指向被回复的那封邮件的Message-ID
  • References: 包含当前邮件所属线程里的一系列Message-ID(包括被回复的邮件ID)

只要这两个字段里有任意一个存在且不为空,就可以判定这是一封回复邮件。

完整判断逻辑代码

把上面的循环补充完整,加入判断逻辑:

foreach ($messageList as $message) {
    $fullMessage = $service->users_messages->get('sender@mail.com', $message->getId(), ['format' => 'full']);
    $headers = $fullMessage->getPayload()->getHeaders();
    
    $isReply = false;
    $subject = '';
    
    // 遍历邮件头,查找目标字段和主题
    foreach ($headers as $header) {
        $name = $header->getName();
        if ($name === 'In-Reply-To' || $name === 'References') {
            if (!empty($header->getValue())) {
                $isReply = true;
            }
        } elseif ($name === 'Subject') {
            $subject = $header->getValue();
        }
    }
    
    // 输出结果
    echo "邮件ID: {$message->getId()} \n";
    echo "主题: {$subject} \n";
    echo $isReply ? "这是一封回复邮件\n" : "这是普通邮件\n";
    echo "-------------------------\n";
}

3. 补充:主题里的「Re:」可以作为辅助判断

虽然有些用户会手动修改主题去掉「Re:」,但如果需要的话,也可以结合主题来辅助验证:

// 检查主题是否以Re:开头(不区分大小写)
$hasRePrefix = strtolower(substr($subject, 0, 3)) === 're:';

不过还是优先用In-Reply-To和References字段,准确性更高。

注意事项

  • 调用users_messages->get时,确保你的API权限包含读取邮件内容的权限(比如https://www.googleapis.com/auth/gmail.readonly)。
  • 如果邮件是线程里的第一封,那它的In-Reply-To和References字段都会是空的,属于普通邮件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 06:32:27