我如何使用 Gmail 阅读整封邮件 API

How can I read the whole message using 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;
}

但我得到的只是屏幕截图中显示的片段。

给我的邮件: 结果:

查看 documentationMessage.Snippet 只有 returns 消息文本的一小部分。您应该改用 Message.Raw,或者更恰当地说,Message.Payload.Body?

var message = GetMessage(service, "me", 1);
Console.WriteLine(message.Raw);
Console.WriteLine(message.Payload.Body.Data);

您应该同时尝试这两种方法,看看哪种方法最适合您正在尝试做的事情。 要获得 message.Raw,您需要传递一个参数,如 docs:

中所述

Returned in messages.get and drafts.get responses when the format=RAW parameter is supplied.

如果其中 none 有效,您可以尝试遍历消息的各个部分以查找您的数据:

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