我正在尝试阅读电子邮件使用Gmail API使用原始和完整的格式。对于某些电子邮件,它不会以两种格式返回完整的电子邮件内容。它只包含标题部分,不包含正文内容。源邮件在邮件正文中有数据,但Gmail api无法读取。当我尝试在本地存储相同的电子邮件时,它给出的错误信息是“无效的MIME内容”
下面是我的示例代码
Email Emailobj = null;
UsersResource.MessagesResource.GetRequest MessageGetRequestObj = null;
MessageGetRequestObj = GmailServiceObj.Users.Messages.Get(UserEmailID, ItemID);
MessageGetRequestObj.Format = UsersResource.MessagesResource.GetRequest.FormatEnum.Raw;
MessageGetRequestObj.Fields = "id,threadId,labelIds,internalDate,sizeEstimate,raw,payload";
Emailobj = MessageGetRequestObj.Execute();它的问题是什么?Gmail api是否支持加密电子邮件?
发布于 2019-06-21 23:00:55
如此处的format参数1所述,您只能在有效负载字段(如果使用“full”格式)或原始字段(如果使用“raw”格式)中检索完整的电子邮件消息数据。
如果使用raw格式,则可以获得包含正文内容的完整电子邮件消息数据,其格式为base64url编码字符串:Emailobj.Raw 2。
如果您使用full格式,您可以像这样获取包含body的完整邮件消息数据的object,比如-> Emailobj.Payload,获取headers list -> Emailobj.Payload.Headers,获取body object -> Emailobj.Payload.Body。检查有效负载第2部分以及如何访问其属性3。
您也可以在这里使用“尝试此API”功能1,检查您在运行请求时收到的消息对象2的结构。
关于你尝试“将电子邮件存储在本地”时出现的错误,根据你的意思,我有两个答案:
如果您想简单地将Message object 2存储在Emailobj变量中:
1)您的Emailobj是一个电子邮件类引用(看起来是您的一个personal类),因此您不能在该变量中存储来自Google Library的Message对象类,因为该类没有您的personal类作为父类。正如文档中所述,Message类仅继承自IDirectResponseSchema接口2。有关继承的详细信息,请参阅此处4。
2)如果您尝试将电子邮件发送到服务器/应用程序:
您应该检查您希望存储电子邮件的目标目的地如何期望完整的电子邮件数据,包括包含所有数据的编码字符串、具有特定结构的标头和正文的Json格式的对象、Blob等。
编辑
由于您需要将其作为EML发送,因此您应该找到一种方法来创建一个blob对象,将“message/RFC2822”作为内容类型(mimeType),并使用从raw格式选项Emailobj.Raw获得的原始字符串作为数据。也许这会有帮助5.
https://stackoverflow.com/questions/56698476
复制相似问题