我正在根据上一个history_id及其正常工作来同步用户的电子邮件。 但是有时它不起作用,并显示一条消息未找到错误。 我检查发现,它正在同步从收件箱中删除或退回的邮件。
我在$ opt_pram数组'historyTypes'=>'messageAdded'
中添加了另一个参数,但它仍在获取所有带有已删除消息的消息。
我也尝试过使用labelIds = INBOX,但是不起作用。
$opt_param = array('historyTypes'=>'messageAdded','startHistoryId' => $history_id,'maxResults'=>100);
$pageToken = NULL;
$histories = array();
do {
try {
if ($pageToken) {
$opt_param['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory($user, $opt_param);
if ($historyResponse->getHistory()) {
$histories = array_merge($histories, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (Exception $e) {
print 'An error occurred: ' . $e->getMessage();
}
} while ($pageToken);
在$histories
中,它也包含已删除的邮件。
我正在寻找一种可以获取所有有效/现有消息的解决方案。
答案 0 :(得分:1)
'historyTypes'=>'messageAdded'
将向您显示自创建相应的startHistoryId
以来添加的所有消息,即使这些消息已被荒谬地删除。作为一种解决方法,我建议您对'historyTypes'=>'messageDeleted'
进行第二次查询,然后比较各个查询响应中包含的消息ID,并仅同步'historyTypes'=>'messageAdded'
查询中包含的消息,但不进行同步在'historyTypes'=>'messageDeleted'
查询中。