Google Workspace 管理 SDK 电子邮件日志搜索报告 API:如何检索电子邮件发送状态?

问题描述 投票:0回答:1

我正在使用 Node.js 中的 Google Workspace 管理 SDK 报告 API - 电子邮件日志搜索 来检索从我的网域发送的邮件的电子邮件日志。我可以获得如下详细信息:

  • 发件人电子邮件
  • 收件人电子邮件
  • 外部消息ID
  • 时间戳(开始日期 - 结束日期)

但是,我找不到任何提供电子邮件发送状态的字段或属性(例如,是否已发送、退回、失败等)。虽然我可以在管理控制台中看到交付状态。

管理控制台 参考图片。有发货状态

我的问题:

  • Google Workspace Admin SDK 是否提供电子邮件的递送状态信息?如果有的话哪里可以找到?

  • 如果 API 不包含此信息,是否有其他 Google API 或方法可用于确定电子邮件的发送状态?

我已经浏览了电子邮件日志搜索文档,但我找不到任何有关检索电子邮件发送状态的参考。

这是我的代码的相关部分:

const { google } = require("googleapis"););
const credentials = require('../file-path-to-creds.json'););

// Scopes for Gmail API access
const scopes = ['https://www.googleapis.com/auth/admin.reports.audit.readonly', 'https://mail.google.com/', 'https://www.googleapis.com/auth/gmail.readonly'];

const AuthClient = new google.auth.GoogleAuth({ credentials, scopes, clientOptions:{ subject: '[email protected]' } });

const admin = google.admin({ version: "reports_v1", auth: AuthClient }); });

async function getGmailReports() {
    const {afterDate, beforeDate} = getDateRangeQuery(14);
    let senders = [];
    let recievers = [];
    let messageIds = [];
   
    await admin.activities.list({ userKey: 'all', applicationName: 'admin',
        eventName: 'EMAIL_LOG_SEARCH',
        startTime: afterDate, endTime: beforeDate,
    }, (err, res) => {
        if (err) { return console.error('API returned an error : ', err); }
        if (!res.data.items || res.data.items.length === 0) { return console.log('No Email log search reports found!'); }

        res.data.items.forEach((list, idx) => {
          list.events.forEach((event, indx) => {
            event.parameters.forEach((param, index) => {
                if (param.name === 'EMAIL_LOG_SEARCH_SENDER') { senders.push({ email: param.value, index: `${idx}-${indx}-${index}` }); }
                if (param.name === 'EMAIL_LOG_SEARCH_RECIPIENT') { recievers.push({ email: param.value, index: `${idx}-${indx}-${index}` }); }
                if (param.name === 'EMAIL_LOG_SEARCH_MSG_ID') { messageIds.push({ id: param.value, index: `${idx}-${indx}-${index}` }); }
            });
          });  
        });
})};        

function getDateRangeQuery(days = 2) {
    let now = new Date();
    const beforeDate = new Date(now).toISOString();
    const afterDate = new Date(now.setDate(now.getDate() - days)).toISOString();
    return {afterDate, beforeDate};
};

module.export = getGmailReports;

如果您需要更多信息,请告诉我。任何帮助将不胜感激! 😊

node.js gmail-api google-workspace google-admin-sdk email-delivery
1个回答
0
投票

你有没有得到任何结果?我基本上是在过去 7 天内搜索电子邮件并获得空 EMAIL_LOG_SEARCH_RECIPIENT 的结果。没有给我任何有用的东西。

例如,UI 中的同一用户返回 30 多个结果,但这样做会返回 7 个结果,但接收器全部为空。

© www.soinside.com 2019 - 2024. All rights reserved.