2015-10-08 15 views
9

kullanarak bütün mesajı okuyabilirsiniz. nasıl Gelen e-posta için vücuttaki tüm metin gerekir Gmail API

Denedim:

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

Ama ekran görüntüsünde görüldüğü gibi sadece pasajı alıyorum. Bana

Gelen posta: enter image description here Sonuç:

enter image description here

+1

? Yönteminiz bir Message nesnesini doğru bir şekilde döndürüyor gibi görünüyor, ancak daha sonra ne yaptığınızı bilmeden size yardımcı olamıyoruz. –

cevap

5

documentation baktığımızda, Message.Snippet yalnızca ileti metninin kısa bir bölümünü döndürür. Bunun yerine Message.Raw veya daha uygun şekilde Message.Payload.Body kullanmalısınız?

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

Her ikisini de denemelisiniz ve yapmaya çalıştığınız şey için en iyi olanı görmelisiniz. docs belirtilen message.Raw almak için, bir parametre geçmesi gerekiyor:

messages.get içinde döndü ve format = RAW parametre temin edildiğinde yanıtları drafts.get. şeylerden hiçbiri işe yaramazsa

, verilerinizi bulmak için mesajın parça üzerinde yineleme deneyebilirsiniz:

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

Evet, onları denedim. Fakat; Console.WriteLine (message.Raw); Sonuç: Boş Console.WriteLine (message.Payload.Body); Sonuç: Google.Apis.Gmail.v1.Data.MessagePartBody –

+0

benim düzenlemek bakın; Ne çalışırsanız ... yükü farklı parçadan yapılabilir gibi – Tobbe

+0

Payload.Body.Data boş sonuçlanan bir dize Payload.Body.Data' (ben biraz çok kısaca docs baktı) 'deneyin 'message.Payload.Parts [0] .Body.Data'? Verilerinizi bulmak için ideal olarak tüm faydalı parçalar üzerinde yinelemeniz gerekir. –