问题描述
我使用.net 4.5版创建了类库,语言为c#。从gmail API中仅提取6封电子邮件需要花费超过几分钟的时间。 我用来获取邮件详细信息的以下代码
public Message GetMailDetails(GmailService service,string EmailId,string MessageID)
{
try
{
var a = service.Users.Messages.Get(EmailId,MessageID);
a.Format = UsersResource.MessagesResource.GetRequest.FormatEnum.Metadata;
var retMessage = a.Execute();
//a.Format = UsersResource.MessagesResource.GetRequest.FormatEnum.Metadata;
//retMessage = a.Execute();
//a.Format = UsersResource.MessagesResource.GetRequest.FormatEnum.Minimal;
//retMessage = a.Execute();
//a.Format = UsersResource.MessagesResource.GetRequest.FormatEnum.Raw;
//retMessage = a.Execute();
return service.Users.Messages.Get(EmailId,MessageID).Execute();
}
catch (Exception e)
{
return null;
}
}
解决方法
您可以做的是尝试使用名为Partial response的东西进行测试,最简单的方法是浏览“尝试我”页面try me,您将需要一个消息ID来对此进行测试
来自message.get的完整回复如下所示:
{
"id": "1742abfd3a4f1c5","threadId": "1742a8c81816e51","labelIds": [
"CHAT"
],"snippet": "I'm surprised nobody questioned me when I said that the tag was 2 weeks old,but clearly has questions from longer than 2 weeks ago. {:","payload": {
"partId": "","mimeType": "text/html","filename": "","headers": [
{
"name": "From","value": "Axxxx"
}
],"body": {
"size": 139,"data": "SSYjMzk7bSBzdXJwcmlzZWQgbm9ib2R5IHF1ZXN0aW9uZWQgbWUgd2hlbiBJIHNhaWQgdGhhdCB0aGUgdGFnIHdhcyAyIHdlZWtzIG9sZCwgYFybHkgaGFzIHF1ZXN0aW9ucyBmcm9tIGxvbmdlciB0aGFuIDIgd2Vla3MgYWdvLiB7Og=="
}
},"sizeEstimate": 100,"historyId": "6172496","internalDate": "1598445048740"
}
通过将参数字段添加到您的请求fields = id,threadid中,响应如下所示
{
"id": "1742abfd3a4f16c5","threadId": "1742a8c181816e51"
}
基本上,您只请求要查看的数据字段。
示例
var request = service.Users.Messages.Get(EmailId,MessageID)
request.Fields = "id,threadid";
var response = request.Execute();
当您尝试从数组或列表中挑选东西时,字段可能会有些棘手,我真的建议在try me中对其进行测试。