【问题标题】:MesageID Android Gmail ApiMessageID Android Gmail API
【发布时间】:2015-11-30 06:47:41
【问题描述】:

如何获取messageID 以在 Android 中使用 Gmail Api 阅读特定邮件?

Gmail Api 的users.messages.get 方法需要两个参数:

  1. userId 将成为用户名
  2. messageID

那么,如何获得messageID 以及messageID 究竟是什么?

【问题讨论】:

标签: android gmail gmail-api


【解决方案1】:

要获取messageIds,您首先需要使用一些可选参数来获取list messages。这将返回 messageIds,它们只是表示消息的唯一字符串。

一个带有常规 http 请求的例子是:

只给我一个messageId,来自我自己发送的带有收件箱标签的邮件

userId = me
labelIds = INBOX
maxResults = 1
q = from:me

GET https://www.googleapis.com/gmail/v1/users/me/messages?labelIds=INBOX&maxResults=1&q=from%3Ame

回应:

{
 "messages": [
  {
   "id": "14f8d57248451a6c", // This is the messageId!
   "threadId": "14f8d57248451a6c"
  }
 ],
 "nextPageToken": "04016634599566360443",
 "resultSizeEstimate": 2
}

然后我在 get 方法中使用这个 messageId 来获取实际内容:

GET https://www.googleapis.com/gmail/v1/users/me/messages/14f8d57248451a6c

回应:

{
 "id": "14f8d57248451a6c",
 "threadId": "14f8d57248451a6c",
 "labelIds": [
  "SENT",
  "INBOX",
  "IMPORTANT"
 ],
 "snippet": "",
 "historyId": "563949",
 "internalDate": "1441185342000",
 "payload": {
  "mimeType": "multipart/mixed",
  "filename": "",
  "headers": [
   {
    "name": "MIME-Version",
    "value": "1.0"
   },
   {
    "name": "Received",
    "value": "by 10.28.99.138 with HTTP; Wed, 2 Sep 2015 02:15:42 -0700 (PDT)"
   },
   {
    "name": "Date",
    "value": "Wed, 2 Sep 2015 11:15:42 +0200"
   }, ...

如果您想使用一个不错的库而不是自己处理请求,Android Quickstart 可以为您提供很大帮助。

【讨论】:

    【解决方案2】:

    您可以列出所有消息,并从那里获取 MessageID。

    public List<Message> listAllMessages(Gmail service, String userId
    ) throws IOException {
    
        ListMessagesResponse response = service.users().messages().list(userId).execute();
        if (response == null || response.isEmpty())
            return null;
    
        List<Message> messages = new ArrayList<Message>();
        messages.addAll(response.getMessages());
    
        int totalMsgs = messages.size();
        Message message;
        if (totalMsgs > 0) {
            for (int i = 0; i < totalMsgs; i++) { 
                message = messages.get(i); //message.getId() is what you want
            }
        }
        return messages;
    }
    

    【讨论】:

      猜你喜欢
      • 2019-03-24
      • 2015-01-26
      • 1970-01-01
      • 2015-10-13
      • 2020-07-04
      • 2022-10-25
      • 2014-10-29
      • 2015-03-16
      • 2017-04-13
      相关资源
      最近更新 更多