从 Gmail API 获取电子邮件的直接 URL(列出消息)
Posted
技术标签:
【中文标题】从 Gmail API 获取电子邮件的直接 URL(列出消息)【英文标题】:Get direct URL to email from Gmail API (list messages) 【发布时间】:2016-12-17 02:33:03 【问题描述】:我正在从 Node.JS 中的 Google Gmail API 检索消息,但在生成或检索电子邮件的直接链接时遇到问题。
目前,我正在使用以下代码:
var link = 'https://mail.google.com/mail/u/0/#inbox/' + messageContent.threadId;
但正如您所见,它始终导航到用户的主要收件箱 (/u/0/
)。我尝试链接的电子邮件在我的第二个和第三个收件箱中。
我尝试使用get message call 获取电子邮件的收件箱号码,但不幸的是它没有返回该数据。
我也尝试了以下代码,但也没有用。它只是加载我的主要收件箱。
var link = 'https://mail.google.com/mail/#inbox/' + messageContent.threadId;
有人知道如何生成正确且直接的电子邮件链接吗?
提前致谢。
测试用例
首先,在 Google 中登录两个或更多帐户。如下图所示,我登录了 3 个帐户。第一个(在顶部)是我的主要帐户。其他的是二级账户。
我的主要 Gmail 的直接链接是:https://mail.google.com/mail/u/0/#inbox/
我的第二个帐户的直接链接是: https://mail.google.com/mail/u/1/#inbox/
我的第三个也是最后一个帐户的链接是: https://mail.google.com/mail/u/2/#inbox/
这些数字取决于您登录帐户的顺序。您登录的第一个帐户将始终是您的主帐户。
所以让我们以2527bfcqed7d54c1
作为示例消息 ID。唯一剩下的就是生成邮件的直接链接,但问题是,我们只知道它链接到的电子邮件地址,而不知道收件箱的号码(例如/u/2
)。
因此,如果邮件存在于收件箱/u/2
中,我们将无法获得直接链接。因为 API 不返回收件箱号码,https://mail.google.com/mail/#inbox/2527bfcqed7d54c1
将始终重定向到主收件箱/u/0
。
【问题讨论】:
请尝试此 SO 帖子中给出的解决方案 - Get direct link to gmail message via Google API。 我试过了,但没用。它只是将我重定向到我的第一个收件箱,并告诉我该消息不存在。链接到日历事件时,我遇到了同样的问题。 【参考方案1】:您可以提供查询参数authuser
,其中包含您要使用的电子邮件地址的值:
https://mail.google.com/mail?authuser=me@gmail.com#all/1567f47dd61869df
这适用于普通的 Gmail 客户端,但不适用于 Google 收件箱,因为线程的 ID 不是 URL 的一部分。但是,您可以搜索邮件的唯一 Message-ID
标头以获得类似的效果:
https://inbox.google.com/search/rfc822msgid:<19.68.00363.4B73EA75@twitter.com>?authuser=me@gmail.com
【讨论】:
@EricDeFrez 是的。这就是我一直使链接独立于登录帐户的方式。 @Tholle 它似乎正在工作。您能否提供文档的链接,还是没有文档? @Tholle 如果有人启用了 Google 收件箱,您是否有解决方案,因为他们会被重定向到收件箱。 (google.com/intl/nl/inbox) @3ISvZFqczFBVUtz 它是无证的。我不记得我是从哪里知道的。遗憾的是,这只适用于普通的 gmail 客户端。查看的消息不是 Google Inbox 中 url 的一部分,但我可以用一个近似的解决方案更新答案。 @Tholle 但是我可以确定用户使用的是 Inbox 还是 Gmail?因为否则,我只需要猜测要生成哪个链接。以上是关于从 Gmail API 获取电子邮件的直接 URL(列出消息)的主要内容,如果未能解决你的问题,请参考以下文章
Python:如何从 gmail API 获取电子邮件的主题
从 Gmail API 批量获取超过 10k 封电子邮件的电子邮件发件人