我需要正文中的所有文字才能收到传入的电子邮件。
我试过了:
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;
}
但我正在获取屏幕截图中显示的片段。
答案 0 :(得分: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:
当提供format = RAW参数时,在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);
}