2015-10-08 7 views
9

Ich brauche den gesamten Text im Körper für eingehende E-Mails.Wie kann ich die ganze Nachricht mit Gmail API lesen

Ich habe versucht:

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

Aber ich bin immer nur im Screenshot gezeigten Code-Schnipsel.

Incoming Mail an mich: enter image description here Ergebnis:

enter image description here

+1

Was genau drucken Sie? Ihre Methode scheint ein Nachrichtenobjekt korrekt zurückzugeben, aber ohne zu wissen, was Sie danach tun, können wir Ihnen nicht helfen. –

Antwort

5

am documentation Sehen, kehrt Message.Snippet nur einen kurzen Teil des Nachrichtentextes. Sie sollten stattdessen Message.Raw oder besser Message.Payload.Body verwenden?

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

Sie sollten beide ausprobieren und sehen, was am besten für das, was Sie versuchen, funktioniert. Um message.Raw Sie benötigen einen Parameter zu übergeben, wie in der docs erklärte:

in messages.get Zurück und Antworten drafts.get, wenn das Format = RAW Parameter geliefert wird.

Wenn keines dieser Dinge funktionieren, könnten Sie über die Teile der Nachricht Iterieren versuchen, Ihre Daten zu finden:

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

Ja, ich habe es versucht. Aber; Console.WriteLine (message.Raw); Ergebnis: Null Console.WriteLine (message.Payload.Body); Ergebnis: Google.Apis.Gmail.v1.Data.MessagePartBody –

+0

Siehe meine Bearbeitung; versuchen Sie 'Payload.Body.Data', die eine Zeichenkette ist (Ich sah die Dokumente ein wenig zu kurz) – Tobbe

+0

Payload.Body.Data Ergebnis Null –