如何使用Gmail API阅读整个邮件

Tur*_*tik 10 c# 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;
}
Run Code Online (Sandbox Code Playgroud)

但我正在获取截图中显示的片段.

收到的邮件给我: 在此输入图像描述 结果:

在此输入图像描述

Tob*_*bbe 5

查看文档,Message.Snippet只返回消息文本的一小部分.您应该使用Message.Raw,或者更恰当地使用Message.Payload.Body

var message = GetMessage(service, "me", 1);
Console.WriteLine(message.Raw);
Console.WriteLine(message.Payload.Body.Data);
Run Code Online (Sandbox Code Playgroud)

您应该尝试两种方式,看看哪种方法最适合您尝试的方法.为了让message.Raw您需要传递参数,如文档中所述:

当提供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);
}
Run Code Online (Sandbox Code Playgroud)