2015-10-08 19 views
9

का उपयोग कर पूरे संदेश को मैं कैसे पढ़ सकता हूं मुझे आने वाले ईमेल के लिए शरीर में सभी टेक्स्ट की आवश्यकता है।जीमेल एपीआई

मैंने कोशिश की:

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

कि वास्तव में आप क्या प्रिंट कर रहे हैं? आपकी विधि एक संदेश वस्तु को सही ढंग से वापस करने लगती है, लेकिन यह जानने के बिना कि आप बाद में क्या कर रहे हैं, हम आपकी मदद नहीं कर सकते हैं। –

उत्तर

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 जब प्रारूप = रॉ पैरामीटर आपूर्ति की है।

उन चीजों से कोई भी काम हैं, तो आप संदेश के कुछ हिस्सों पर पुनरावृत्ति अपने डेटा खोजने की कोशिश कर सकते हैं:

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

हाँ मैंने कोशिश की। परंतु; कंसोल। राइटलाइन (संदेश। राव); परिणाम: शून्य कंसोल। राइटलाइन (संदेश। Payload.Body); परिणाम: Google.Apis.Gmail.v1.Data.MessagePartBody –

+0

मेरा संपादन देखें; 'Payload.Body.Data' का प्रयास करें जो एक स्ट्रिंग है (मैंने दस्तावेज़ों को थोड़ा सा संक्षेप में देखा) – Tobbe

+0

Payload.Body.Data परिणाम शून्य –

संबंधित मुद्दे