我如何使用 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;
}
但我得到的只是屏幕截图中显示的片段。
给我的邮件:
结果:
查看 documentation,Message.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);
}
我需要传入电子邮件正文中的所有文本。
我试过了:
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;
}
但我得到的只是屏幕截图中显示的片段。
给我的邮件:
查看 documentation,Message.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);
}