Gmail API用户。消息:列表

我正在研究电子邮件平台(使用Objective-C语言),并且想要使用GTMHTTPFetcher和GTMOAuth2Authentication框架获取一些邮件。 我使用gmail API获取用户信息并获得适当的响应。

我想用类别为用户的收件箱提取电子邮件; 我正在考虑使用SYSTEM级标签,例如CATEGORY_SOCIAL作为社交类, CATEGORY_PERSONAL作为个人/小学等。

为了实现此功能,我使用了以下GET API:https://www.googleapis.com/gmail/v1/users/userId/messages API以及适当的参数。 我正在使用谷歌的尝试了这个选项。 https://developers.google.com/gmail/api/v1/reference/users/messages/list#try-it

问题:我能够获取所有messageID / threadID,但无法在Google开发者控制台中获取labelID。 我也尝试了Objective-C代码中的GET方法,但没有获得labelID。

我已经附加了Objective-C代码的代码片段,你能帮我解决这个问题吗?

NSString *newAPIStr = @"";

newAPIStr = [NSString stringWithFormat:@"https://www.googleapis.com/gmail/v1/users/%@/messages?fields=messages(id,labelIds,threadId),nextPageToken&maxResults=%d",emailStr,maxResult];


NSURL *url = [NSURL URLWithString:newAPIStr];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPMethod:@"GET"];

GTMOAuth2Authentication *currentAuth = [GTMOAuth2ViewControllerTouch authForGoogleFromKeychainForName:kKeychainItemName clientID:kMyClientID clientSecret:kMyClientSecret];
GTMHTTPFetcher* myFetcher = [GTMHTTPFetcher fetcherWithRequest:request];
[myFetcher setAuthorizer:currentAuth];
[myFetcher beginFetchWithCompletionHandler:^(NSData *retrievedData, NSError *error) {
    if (error != nil) {
        // status code or network error
    } else {
        // succeeded
        NSDictionary* json = [NSJSONSerialization JSONObjectWithData:retrievedData options:kNilOptions error:&error];
        NSArray* messageArray =[json objectForKey:@"messages"];
        NSString *nextPageToken = [json objectForKey:@"nextPageToken"];
        for (NSDictionary *dictionary in messageArray) {
            [[EmailService instance].primaryMessages addObject:[dictionary objectForKey:@"id"]];
        }

        NSMutableArray *pArray = [[EmailService instance] primaryMessages];
        [[NSUserDefaults standardUserDefaults] setObject:pArray forKey: ALL_FUNNL];
        [[NSUserDefaults standardUserDefaults] setObject:nextPageToken forKey:@"PRIMARY_PAGE_TOKEN"];
        [[NSUserDefaults standardUserDefaults] synchronize];

        if([EmailService instance].primaryMessages.count < 5000)
            [self getPrimaryMessages:emailStr nextPageToken:nextPageToken numberOfMaxResult:100];
        else
            NSLog(@"----- Primary messages count > %d",pArray.count);
    }
}];}

输出如下:

{ "messages": [ { "id": "146da54fe3dc089e", "threadId": "146da54fe3dc089e" }, { "id": "146da41d9486982f", "threadId": "146da41d9486982f" }, ... }


message.list()只返回消息的id,就像标准的REST行为一样,以保持响应的小而快。 如果您还需要获取有关消息(如标签)的更多信息,则需要使用message.get(id = $ THAT_ID,format = MINIMAL)之类的东西进行后续处理,您可以使用批量调用以获取许多消息消息并行。


我相信你应该以相反的方式去做。 获取标签列表并为每个标签获取消息。

INBOX本身就是一个标签,可让您获得主要电子邮件(“主要”标签中的电子邮件)

在此处获取标签列表:https://developers.google.com/gmail/api/v1/reference/users/labels/list

获取消息时提供labelId(s)。

此外,CATEGORY_UPDATES,INBOX,CATEGORY_PROMOTIONS本身也是ID和名称。

我希望这有助于处理您的要求。


得到答复后

{
 "messages": [
  {
   "id": "146da54fe3dc089e",
   "threadId": "146da54fe3dc089e"
  },
  {
   "id": "146da41d9486982f",
   "threadId": "146da41d9486982f"
  },
  ...
}

您可以使用以下方法使用ID从每封邮件中获取标签ID

https://www.googleapis.com/gmail/v1/users/<userId>/messages/<messageId>

参考:Users.messages:get

链接地址: http://www.djcxy.com/p/22477.html

上一篇: Gmail API Users.messages: list

下一篇: What does "incomplete block on file" mean?