2016-06-25 2 views
0

Как получить последние 20 писем от gmail?Получите последние 20 писем от Gmail (Java Android)

ListMessagesResponse listMessagesResponse = mService.users().messages() 
        .list(user).setQ("from:----") 
        .execute(); 

В настоящее время я использую это, но он возвращает идентификаторы сообщений без какой-либо полезной нагрузки. Я хочу получить полное электронное письмо с телом. Может быть, как получить последнее письмо от конкретного отправителя?

ответ

1

Как @trajchevska отметил, вы можете получить только основные детали с вашим кодом. Чтобы получать сообщения в полном формате, вы должны позвонить mService.users().messages().get(user, messageId).execute() за каждое сообщение. Лучший способ для этого - создать пакетный вызов. Поэтому, если вы хотите получить все сообщения, соответствующие указанному запросу, вы должны сделать что-то вроде этого.

final ListMessagesResponse response = mService.users().messages().list(user).setQ("from:----").execute(); 
final List<Message> messages = new ArrayList<Message>(); 
while (response.getMessages() != null) { 
    messages.addAll(response.getMessages()); 
    if (response.getNextPageToken() != null) { 
     String pageToken = response.getNextPageToken(); 
     response = service.users().messages().list(user).setQ("from:----").setPageToken(pageToken).execute(); 
    } else { 
     break; 
    } 
} 

final List<Message> fullMessages = new ArrayList<>(); 
final JsonBatchCallback<Message> callback = new JsonBatchCallback<Message>() { 
    public void onSuccess(Message message, HttpHeaders responseHeaders) { 
     fullMessages.add(message); 
    } 

    public void onFailure(GoogleJsonError e, HttpHeaders responseHeaders) { 
     // do what you want if error occurs 
    } 
}; 
BatchRequest batch = mService.batch(); 
for (Message message : messages) { 
    mService.users().messages().get(user, message.getId()).setFormat("full").queue(batch, callback); 
} 

batch.execute(); 

Надеюсь, это поможет.

0

Функция списка возвращает список сообщений с базовыми данными, которые обычно являются только идентификатором. Если вы хотите получить информацию о полезной нагрузке или других сообщениях, вам необходимо перебирать все сообщения, вытащенные с помощью list, и вызывать нужную функцию специально для выбранного объекта. У меня есть только некоторые базовые знания в области Java, но логика будет что-то вроде этого:

messages = listMessagesResponse.getMessages(); 
for (Message message : messages) { 
    payload = message.getPayload(); 
    ... 
} 

Проверьте свои документы, у них есть несколько примеров, которые могут быть полезны.

List Messages

Get Concrete Message

Смежные вопросы