从Gmail(Java Android)获取最近20封电子邮件 [英] Get last 20 emails from Gmail (Java Android)

查看:68
本文介绍了从Gmail(Java Android)获取最近20封电子邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何从gmail获取最近20封电子邮件?

How can I get last 20 emails from gmail?

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

当前我正在使用它,但是它返回没有任何有效负载的消息ID.我想获得完整的电子邮件与身体.就像从特定发件人处获取最新电子邮件一样吗?

Currently I am using this but it returns message IDs without any payload. I want to get full email with body. Can it be like get the latest email from specific sender?

推荐答案

正如@trajchevska指出的那样,您只能通过代码获得基本详细信息.要获取完整格式的消息,您应该为每条消息调用 mService.users().messages().get(user,messageId).execute().最好的方法是创建一个批处理调用.因此,如果要获取所有与指定查询匹配的消息,则应执行以下操作.

As @trajchevska pointed out you can only get the basic details with your code. To get messages in full format you should call mService.users().messages().get(user, messageId).execute() for every message. Best way for this is to create a batch call. So if you want to get all the messages that match specified query you should do something like this.

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();

希望这会有所帮助.

这篇关于从Gmail(Java Android)获取最近20封电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆