使用javascript使用Gmail API显示邮件内容
我正在尝试为我的web应用程序连接GMAIL API,我能够成功连接到gmail帐户并能够检索所有邮件。下一个级别是单击邮件,我需要像gmail一样显示邮件详细信息。我能够使用gmail API使用邮件线程ID检索特定邮件,并且我尝试使用响应中的代码段数据显示邮件内容缺失,但当我使用gmail查看同一封邮件时,它会正确显示新行。我在这里缺失了什么?我认为代码片段的类型是纯文本,但gmail仍然能够正确显示。因此,我应该如何在我的应用程序中实现同样的效果。 [更新]感谢它的工作,但现在当我在gmail应用程序中查看邮件时,它看起来像下图如何避免这些换行我甚至试图更改内容传输编码,但当我在gmail中查看邮件时仍然会出现硬换行如何避免这些换行使用javascript使用Gmail API显示邮件内容,javascript,gmail-api,Javascript,Gmail Api,我正在尝试为我的web应用程序连接GMAIL API,我能够成功连接到gmail帐户并能够检索所有邮件。下一个级别是单击邮件,我需要像gmail一样显示邮件详细信息。我能够使用gmail API使用邮件线程ID检索特定邮件,并且我尝试使用响应中的代码段数据显示邮件内容缺失,但当我使用gmail查看同一封邮件时,它会正确显示新行。我在这里缺失了什么?我认为代码片段的类型是纯文本,但gmail仍然能够正确显示。因此,我应该如何在我的应用程序中实现同样的效果。 [更新]感谢它的工作,但现在当我在g
这个
代码片段只是一行文字的预览,只包含了几个单词,就像gmail web界面上显示的那样
完整的电子邮件文本嵌套在有效负载.parts
下,并用base 64编码
实现此目的的一种方法如所述:
注意:警告:电子邮件之间的数据结构可能不同,您的代码应该考虑到这一点
另一种可能的解决方案是请求raw
格式的消息,如前所述。然后,API应该使用raw
属性(也是base64编码的)进行响应。感谢这为javascript提供了技巧,我们可以使用下面的方法,但正如您所提到的,我们也需要处理不同的数据结构,但在我的例子中,我设法检查了大多数结构。atob(part.payload.parts[0].body.data.replace(/u/g,“/”).replace(/-/g,“+”);这解决了你的问题吗@anbuselvan?如果是这样的话,您是否可以接受anser,以便其他用户可以轻松找到它?谢谢您是否尝试过按照中所述获取原始消息,然后对其进行解码?这将允许您访问不同的HTML部分。另外,为了澄清,您基本上希望获得HTML电子邮件消息,以便您可以修改其部分,对吗?
{id: "172ac2ce0f73c58e", threadId: "172ac2ce0f73c58e", labelIds: Array(2), snippet: "DEar, his djknejkn ;medmek dckmeklmdkelm ekmcelkmckl elkmcklem lkmekcmel lmeklcme Thanks,", payload: {…}, …}
historyId: "10454530"
id: "172ac2ce0f73c58e"
internalDate: "1592026521000"
labelIds: (2) ["SENT", "INBOX"]
payload: {partId: "", mimeType: "multipart/alternate", filename: "", headers: Array(10), body: {…}, …}
result: {id: "172ac2ce0f73c58e", threadId: "172ac2ce0f73c58e", labelIds: Array(2), snippet: "DEar, his djknejkn ;medmek dckmeklmdkelm ekmcelkmckl elkmcklem lkmekcmel lmeklcme Thanks,", payload: {…}, …}
sizeEstimate: 644
snippet: "DEar, his djknejkn ;medmek dckmeklmdkelm ekmcelkmckl elkmcklem lkmekcmel lmeklcme Thanks,"
threadId: "172ac2ce0f73c58e"
__proto__: Object
var part = message.parts.filter(function(part) {
return part.mimeType == 'text/html';
});
var html = urlSafeBase64Decode(part.body.data);