Gmail API 在 CC 中包含联系人的情况下获取邮件

Gmail API get messages where there are contacts included in the CC

我正在尝试获取所有消息,其中:

我查看了 advanced search operators for some guides, but all I can see is specifying a contact to a cc: search operator, reference
确实没有用于搜索有人被抄送消息的所有消息的文档。无论是 SENT 还是 INBOX

如果有人能回答这个问题就好了。

问题:

  • 您想列出填充了 Cc header 的所有消息。
  • 无法通过是否存在任何 cc 直接过滤掉,只能针对某个电子邮件地址(即 cc:my_user@my_domain.com)。 API 和 UI.
  • 都是这种情况

解决方案:

在这种情况下,我建议采用以下工作流程:

  1. 调用 users.messages.list 列出您邮箱中的所有邮件。如果您想检索所有消息,此时您必须处理分页,使用 pageTokennextPageToken.
  2. 对于每条消息id,调用users.messages.get获取对应的消息(只有idthreadIdlist返回)。
  3. 过滤掉没有 Cc header.
  4. 的邮件

代码示例:

例如,在 Apps 脚本中,您可以这样做(此示例中未实现分页):

function getCcMessages() {
  const userId = "me";
  const { messages } = Gmail.Users.Messages.list(userId);
  const messageIds = messages.map(m => m["id"]);
  const optionalArgs = {
    format: "METADATA",
    metadataHeaders: "Cc" 
  }
  const ccMessages = messageIds.map(id => {
    const message = Gmail.Users.Messages.get(userId, id, optionalArgs);
    return message;
  }).filter(m => {
    const headers = m["payload"]["headers"];
    return headers;
  });
  return ccMessages;
}