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

如何通过Google Workspace Admin SDK邮件日志搜索API获取投递状态?

关于Google Workspace邮件投递状态的API获取方案

问题1:Admin SDK Reports API是否提供投递状态?

Admin SDK Reports API的EMAIL_LOG_SEARCH事件不包含邮件投递状态字段,官方文档的参数列表里确实没有相关属性——虽然管理控制台能展示这个状态,但该API暴露的日志字段仅涵盖你已获取的发件人、收件人、消息ID、时间戳等基础信息,未开放投递状态数据。

问题2:替代的API/方法

如果需要获取投递状态,有以下几种可行方案:

1. 使用Gmail API查询单封邮件的状态

通过你已获取的外部消息ID,调用Gmail API的users.messages.get接口,查询对应邮件的头信息或内容,从中提取投递状态:

  • 关键头字段参考:X-Delivery-Status(直接标记投递状态)、X-Gm-Message-State(Gmail内部状态),也可检查邮件是否包含退回通知相关的头信息(如Return-Path、异常Received记录)。
  • 权限说明:你当前代码已配置域范围授权(subject参数),且已包含https://www.googleapis.com/auth/gmail.readonly权限,符合调用要求。

示例代码片段(可结合你现有逻辑扩展):

const gmail = google.gmail({ version: "v1", auth: AuthClient });

// 通过外部消息ID和发件人邮箱获取投递状态
async function getDeliveryStatus(externalMsgId, senderEmail) {
  try {
    const res = await gmail.users.messages.get({
      userId: senderEmail,
      id: externalMsgId,
      format: 'metadata',
      metadataHeaders: ['X-Delivery-Status', 'X-Gm-Message-State']
    });
    const headers = res.data.payload.headers || [];
    const deliveryStatus = headers.find(h => h.name === 'X-Delivery-Status')?.value;
    const gmState = headers.find(h => h.name === 'X-Gm-Message-State')?.value;
    return { deliveryStatus, gmState };
  } catch (err) {
    console.error('获取投递状态失败:', err);
    return null;
  }
}

2. 使用Alert Center API捕获投递异常事件

若你的域开启了告警中心,邮件投递失败、退回这类事件会生成对应告警。可通过Alert Center API查询这些告警,关联到具体邮件,适合批量监控异常投递场景。该API需要https://www.googleapis.com/auth/apps.alerts权限。

3. BigQuery日志导出(批量分析场景)

若你的Google Workspace开启了邮件日志导出到BigQuery,导出的数据会包含完整的delivery_status字段,可直接通过SQL查询批量获取状态信息,适合需要分析大量邮件的场景。

代码小提示

你现有代码里的module.export存在拼写错误,应改为module.exports。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 07:48:10