【问题标题】:Gmail API unable to get entire message contentsGmail API 无法获取整个邮件内容
【发布时间】:2019-11-04 00:17:15
【问题描述】:

我正在尝试使用原始格式和完整格式的 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 是否支持加密邮件?

【问题讨论】:

  • 你使用什么语言?
  • 当您尝试“将电子邮件存储在本地”时,“目标”期望的是什么对象?
  • 我们将其存储为 EML

标签: c# google-api gmail-api


【解决方案1】:

正如此处 [1] 的格式参数所述,您只能在有效负载字段(如果您使用“完整”格式)或原始字段(如果您使用“原始”格式)中检索完整的电子邮件数据.

如果您使用原始格式,您可以获得带有正文内容的完整电子邮件数据作为 base64url 编码的字符串,如下所示:Emailobj.Raw [2]。

如果使用完整格式,可以像这样获取包含正文的完整邮件数据的对象->Emailobj.Payload,获取标题列表->Emailobj.Payload.Headers,获取正文对象->@ 987654329@。检查有效负载部分 [2] 以及如何访问其属性 [3]。

您还可以使用此处的“试用此 API”功能 [1],检查运行请求时收到的消息对象 [2] 的结构。

关于您尝试“将电子邮件存储在本地”时遇到的错误,这取决于您的意思,我有 2 个答案:

如果您只想将 Message 对象 [2] 存储在您的 Emailobj 变量中:

1) 您的 Emailobj 是一个 Email 类引用(这似乎是您的个人类),因此您不能将 Google Library 中的 Message 对象类存储在该变量中,因为该类没有您的个人类作为父类。如文档中所述,Message 类仅继承自 IDirectResponseSchema 接口 [2]。关于继承的更多信息在这里 [4]。

2) 如果您尝试将电子邮件发送到服务器/应用程序:

您应该检查要存储电子邮件的目标目的地如何期待完整的电子邮件数据,包括所有数据的编码字符串、具有特定标题和正文结构的 Json 格式对象、Blob 等.

编辑

由于您需要将其作为 EML 发送,您应该找到一种方法来创建一个 blob 对象,其中“message/rfc2822”作为内容类型 (mimeType),原始字符串作为数据,您从原始格式选项Emailobj.Raw。也许这会有所帮助 [5]。

[1]https://developers.google.com/gmail/api/v1/reference/users/messages/get

[2]https://developers.google.com/resources/api-libraries/documentation/gmail/v1/csharp/latest/classGoogle_1_1Apis_1_1Gmail_1_1v1_1_1Data_1_1Message.html

[3]https://developers.google.com/resources/api-libraries/documentation/gmail/v1/csharp/latest/classGoogle_1_1Apis_1_1Gmail_1_1v1_1_1Data_1_1MessagePart.html

[4]https://www.codeproject.com/Articles/1445/Introduction-to-inheritance-polymorphism-in-C

[5]https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-dotnet?tabs=linux

【讨论】:

    猜你喜欢
    • 2021-02-04
    • 2020-09-02
    • 2015-07-22
    • 2016-04-30
    • 2017-06-24
    • 2017-09-18
    • 2015-12-15
    • 2021-01-27
    相关资源
    最近更新 更多