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. 都是这种情况
解决方案:
在这种情况下,我建议采用以下工作流程:
- 调用 users.messages.list 列出您邮箱中的所有邮件。如果您想检索所有消息,此时您必须处理分页,使用
pageToken
和 nextPageToken
.
- 对于每条消息
id
,调用users.messages.get获取对应的消息(只有id
和threadId
从list
返回)。
- 过滤掉没有
Cc
header. 的邮件
代码示例:
例如,在 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;
}
我正在尝试获取所有消息,其中:
- 我抄送了某人
- 有人将入站消息抄送给我。
我查看了 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. 都是这种情况
解决方案:
在这种情况下,我建议采用以下工作流程:
- 调用 users.messages.list 列出您邮箱中的所有邮件。如果您想检索所有消息,此时您必须处理分页,使用
pageToken
和nextPageToken
. - 对于每条消息
id
,调用users.messages.get获取对应的消息(只有id
和threadId
从list
返回)。 - 过滤掉没有
Cc
header. 的邮件
代码示例:
例如,在 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;
}