2015-10-08 31 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

究竟什麼是你打印?你的方法似乎正確地返回一個消息對象,但不知道你在做什麼之後,我們無法幫助你。 –

回答

5

望着documentationMessage.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並提供格式= RAW參數時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

是的,我試過了。但; Console.WriteLine(message.Raw);結果:空 Console.WriteLine(message.Payload.Body);結果:Google.Apis.Gmail.v1.Data.MessagePartBody –

+0

查看我的編輯;嘗試'Payload.Body.Data'這是一個字符串(我看了文檔有點太簡單) – Tobbe

+0

Payload.Body.Data結果爲空 –

相關問題