2015-10-08 33 views
9

Potrzebuję całego tekstu w treści wiadomości przychodzących.Jak mogę przeczytać całą wiadomość za pomocą interfejsu Gmail API

Próbowałem:

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; 
} 

Ale ja dostaję tylko urywek, jak pokazano na zrzucie ekranu.

poczty przychodzącej do mnie: enter image description here Wynik:

enter image description here

+1

Co dokładnie pan drukowania? Twoja metoda wydaje się poprawnie zwracać obiekt wiadomości, ale nie wiedząc, co robisz później, nie możemy ci pomóc. –

Odpowiedz

5

Patrząc na documentation, Message.Snippet zwraca tylko krótki fragment tekstu wiadomości. Powinieneś zamiast tego użyć Message.Raw lub, co bardziej odpowiednie, Message.Payload.Body?

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

Należy spróbować zarówno na zewnątrz i zobaczyć, co będzie najlepsze dla co próbujesz zrobić. Aby uzyskać message.Raw trzeba przekazać parametr, jak stwierdzono w docs:

Zwracany w messages.get i drafts.get odpowiedzi kiedy dostarczany jest format = parametr RAW.

Jeśli żadna z tych rzeczy działa, można spróbować iteracji po części wiadomości, aby znaleźć swoje dane:

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

Tak, spróbowałem ich. Ale; Console.WriteLine (message.Raw); Wynik: Null Console.WriteLine (message.Payload.Body); Wynik: Google.Apis.Gmail.v1.Data.MessagePartBody –

+0

Zobacz moją edycję; wypróbuj 'Payload.Body.Data', który jest ciągiem znaków (zbyt krótko spojrzałem na dokumenty) – Tobbe

+0

Wynik Payload.Body.Data Null –