2015-05-11 6 views
0

У меня возникли проблемы с получением содержимого сообщения, отображаемого с помощью API-интерфейсов gmail. Я подключился к почтовому ящику и создаю список сообщений, но все значения, связанные с сообщениями, помимо идентификатора, равны нулю.Доступ к содержимому сообщений из API Gmail

Код для создания списка сообщений, вырезанных из образца кода на веб-сайте Gmail API:

public static List<Message> ListMessages(GmailService service, String userId, String query) 
    { 
     List<Message> result = new List<Message>(); 
     UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List(userId); 
     request.Q = query; 
     do 
     { 
      try 
      { 
       ListMessagesResponse response = request.Execute(); 
       result.AddRange(response.Messages); 
       request.PageToken = response.NextPageToken; 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine("An error occurred: " + e.Message); 
      } 
     } while (!String.IsNullOrEmpty(request.PageToken)); 
     return result; 
    } 

И код для печати сообщений:

List<Message> messages = ListMessages(service, "me", ""); 
     Console.WriteLine("Messages from user's inbox:"); 
     foreach(Message m in messages) 
     { 
      string snippet = m.Snippet; 
      Console.WriteLine("Message: {0}", snippet); 
     } 

Но еще раз , когда я помещаю точку прерывания в строку печати и проверяю список сообщений, все значения, связанные с содержимым сообщений, являются нулевыми.

ответ

0

Я это понял; Я оставлю это, потому что это не совсем очевидно. Если бы добавить оператор get в цикле foreach, чтобы явно «получить» сообщение, используя идентификатор из списка.

foreach(Message m in messages) 
     { 
      Message m2 = service.Users.Messages.Get("me", m.Id).Execute(); 
      Console.WriteLine("Message: {0}", m2.Snippet); 
     } 
Смежные вопросы