2015-10-08 14 views
9

受信メールの本文にはすべてのテキストが必要です。Gmail APIを使用してメッセージ全体を読むにはどうすればいいですか

私が試した:

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

あなたは何をしようとしているのが最も効果的かを試してみるべきです。フォーマット= RAWパラメータが供給されるとmessages.getとdrafts.get応答で返さ

:あなたはdocsで述べたように、パラメータを渡す必要がありmessage.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 –