2014-08-29 2 views
0

Веб-приложение отправляет письмо от имени UserA к UserB с использованием нового API Gmail (Users.messages: отправить).Эффективный способ синхронизации сообщений Gmail Inbox с использованием нового API Gmail?

Синхронный ответ содержит ThreadId, MessageId которые хранятся в базе данных.

Затем запрос к истории API для каких-либо изменений в почтовом ящике пользователя (Users.history: список).

Есть ли эффективный способ получить все обновления с момента последней синхронизации (новые ответы, чтение/непрочитанные изменения)?

Одна из реализаций, которые мы пытались отфильтровать результаты API истории с помощью пользовательской метки. К сожалению, мы заметили, что после того, как поток/сообщение помечено определенной меткой, любые последующие ответы не будут помечены автоматически, и новые ответы не будут включены в ответ API истории.

Второй подход заключался в том, чтобы запрашивать потоки с использованием расширенного поиска gmail для конкретной метки и даты (например, после: 2014/08/29 label: MY_LABEL). Проблема заключалась в том, что gmail не возвращает потоки, созданные до 2014/08/29, но получил ответ на эту дату.

Любые масштабируемые предложения были бы весьма полезными.

ответ

1

Не уверен, что я здесь понимаю, users.history.list был сделан именно для этого. Учитывая предыдущий historyId, вы можете вызвать history.list (previousHistoryid), выполнить итерацию результатов, чтобы найти все идентификаторы сообщений, которые были обновлены с момента предыдущего historyId. Затем вызовите messages.get() для всех этих сообщений - для любых сообщений, которые вы уже знали о вас, вы можете просто вызвать формат = MINIMAL (чтобы увидеть обновления меток), а для новых сообщений вы можете использовать другой формат для получения содержимого сообщения, если Вы нуждаетесь в этом.

+0

Привет Эрик и спасибо за ваш ответ. Это именно то, что мы делаем. Мы думали добавить пользовательский ярлык к письмам, отправленным через наше приложение, а затем фильтровать результаты history.list с этим ярлыком, чтобы минимизировать обработанный ответ. По-видимому, это не работает, поскольку новые идентификаторы сообщений, которые поступают как ответ на исходный идентификатор потока, автоматически не помечены. – nikosd23