如何从历史记录列表中排除“已删除的邮件”

时间:2019-09-25 19:37:55

标签: php gmail-api

我正在根据上一个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中,它也包含已删除的邮件。

我正在寻找一种可以获取所有有效/现有消息的解决方案。

1 个答案:

答案 0 :(得分:1)

'historyTypes'=>'messageAdded'将向您显示自创建相应的startHistoryId以来添加的所有消息,即使这些消息已被荒谬地删除。

作为一种解决方法,我建议您对'historyTypes'=>'messageDeleted'进行第二次查询,然后比较各个查询响应中包含的消息ID,并仅同步'historyTypes'=>'messageAdded'查询中包含的消息,但不进行同步在'historyTypes'=>'messageDeleted'查询中。