gmail-api - Gmail API Watch 未按标签过滤

标签 gmail-api

我正在将 Gmail 推送通知与 Google PubSub 一起使用,并且有一个我想监控任何更改的自定义标签。我使用以下代码为标签注册 watch (标签的 ID 为 Label_1)

WatchRequest wr = new WatchRequest();
wr.TopicName = "projects/" + primaryLink.ggProjectId + "/topics/iLink" + segmentId;
if (labels != null && labels.Count > 0)
{
    wr.LabelIds = new List<string>();
    wr.LabelIds.Add("Label_1");
    wr.LabelFilterAction = "include";
}

WatchResponse wrr = gs.Users.Watch(wr, emailAccount).Execute();
return "HistoryId " + wrr.HistoryId.ToString();

}

watch 注册正常。问题是我会收到任何 Gmail 更改的推送通知,而不仅仅是标签下的更改。

是否支持自定义标签?

最佳答案

我注意到了同样的问题,但后来发现这是因为 API 的工作方式。您可以通过 LabelIds 过滤电子邮件,但只有当电子邮件被直接过滤到选定的自定义标签时,您才会收到通知。我猜它的设计而不是 API 中的缺陷。

要对此进行测试,请在 Gmail 中创建一个自定义过滤器,它将您的自定义标签直接应用于一组电子邮件,您应该会收到这些电子邮件的通知。

编辑(2015 年 6 月 11 日):
推送通知会向您发送 HistoryID 和用户的邮箱名称。作为响应,您的端点应该调用 userhistory.list() 并带有您想要监视更改的 HistoryID 和 LabelId。

$opt_param = array();
$opt_param['startHistoryId'] = $historyID;
$opt_param['labelId'] = $labelID;
$opt_param['fields'] = 'nextPageToken,historyId,history/messagesAdded';

$service->users_history->listUsersHistory($userID, $opt_param);

上面是一个 PHP 代码片段,用于使用 historyID 和 labelID 过滤历史列表。

关于gmail-api - Gmail API Watch 未按标签过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30591302/

相关文章:

php - Gmail API - PHP - 使用服务帐户发送电子邮件

python - metadataHeaders 选项因多个 header 而失败

javascript - 发布请求正文谷歌API

javascript - 使用 gmail javascript api 从特定用户发送电子邮件

python - Gmail 邮件正文的编码是什么?如何解码?

java - GMail API 批量插入消息抛出 - java.io.IOException : insufficient data written

c# - Gmail api 与 .Net 客户端库 : Missing draft message [400]

google-app-engine - Gmail REST API 线程搜索未给出预期结果

c# - 将 Gmail API 消息转换为 OpenPop Mime 消息

python-2.7 - Gmail API 发送电子邮件,但有些电子邮件从未被接收