2015-10-08 4 views
9

Мне нужен весь текст в теле для входящей электронной почты.Как я могу прочитать все сообщение с помощью API Gmail

Я пробовал:

var mesage = GetMessage(service, "me", 1); 
Console.WriteLine(mesage.Snippet); 

public static Message GetMessage(GmailService service, String userId, String messageId) 
{ 
    try 
    { 
     return service.Users.Messages.Get(userId, messageId).Execute(); 
    } 
    catch (Exception e) 
    { 
     Console.WriteLine("An error occurred: " + e.Message); 
    } 

    return null; 
} 

Но я получаю только фрагмент кода, как показано на скриншоте.

входящей почты мне: enter image description here Результат:

enter image description here

+1

Что именно вы печать? Ваш метод, кажется, правильно возвращает объект Message, но, не зная, что вы делаете, мы не можем вам помочь. –

ответ

5

Глядя на documentation, Message.Snippet возвращает только короткую часть текста сообщения. Вместо этого вы должны использовать Message.Raw или более подходящим образом, Message.Payload.Body?

var message = GetMessage(service, "me", 1); 
Console.WriteLine(message.Raw); 
Console.WriteLine(message.Payload.Body.Data); 

Вы должны попробовать оба и посмотреть, что лучше всего подходит для того, что вы пытаетесь сделать. Чтобы получить message.Raw вам нужно передать параметр, как указано в docs:

Возвращается в messages.get и drafts.get ответов, когда формат RAW = параметр поставляется.

Если ни одна из этих вещей не работает, вы можете попробовать итерацию части сообщения, чтобы найти ваши данные:

foreach (var part in message.Payload.Parts) 
{ 
    byte[] data = Convert.FromBase64String(part.Body.Data); 
    string decodedString = Encoding.UTF8.GetString(data); 
    Console.WriteLine(decodedString); 
} 
+1

Да, я попробовал. Но; Console.WriteLine (message.Raw); Результат: Null Console.WriteLine (message.Payload.Body); Результат: Google.Apis.Gmail.v1.Data.MessagePartBody –

+0

См. Мое редактирование; попробуйте 'Payload.Body.Data', который является строкой (я слишком быстро посмотрел на документы) – Tobbe

+0

Payload.Body.Data result Null –

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