Gmail API Watch不按标签过滤

时间:2015-06-02 08:43:42

标签: gmail-api

我正在使用Google推送通知与Google PubSub,并且我想要监控任何更改的自定义标签。我使用以下代码为标签注册监视(标签的标识为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();

}

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

是否支持自定义标签?

1 个答案:

答案 0 :(得分:0)

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

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

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

$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过滤历史列表。

相关问题