如何使用 Google Mail API 检查邮件是不是被标记为“重要”?

Posted

技术标签:

【中文标题】如何使用 Google Mail API 检查邮件是不是被标记为“重要”?【英文标题】:How to check if message is flagged as "important" using Google Mail API?如何使用 Google Mail API 检查邮件是否被标记为“重要”? 【发布时间】:2014-11-19 07:23:30 【问题描述】:

您可以使用 Google Mail API 接收邮件标记,例如“已读”/“未读”或“已标记”/“未标记”。您可以在Users.messages: get 函数的结果中的字段labelIds 中看到此信息:

如果标签 STARRED 出现,则表示该消息已标有星号。 如果标签 UNREAD 出现,则表示该消息尚未阅读。

问题一

我找不到如何检查邮件是否被标记为“重要”。 有谁知道是否有办法使用 Google Mail API 检测此标志?

问题二

您可以用不同的星号(红色、绿色、蓝色)标记邮件,但 Google Mail API 不会在 Users.messages: get 函数中返回此信息。 我可以使用 Google Mail API 确定哪种星号(什么颜色)有消息吗?

【问题讨论】:

【参考方案1】:

基于说“消息标志”,我假设您现在正在使用 Gmail IMAP? Gmail API 会在邮件中公开常见的 Gmail 标签(如已加星标和未读),但不会公开任何特定于 IMAP 的标签(例如 \Deleted、\Recent)。

IMAP \Flagged 映射到 Web 界面中的 Star 和 API 中的“STARRED”: https://developers.google.com/gmail/api/guides/labels

重要标签(对应于 IMAP 中的 \Important 邮箱)在 API 中也应该可见(系统标签称为“IMPORTANT”)。

API 目前不支持不同颜色的星星(请参阅上述标签指南以获取当前支持的 SYSTEM 标签的权威列表)。

【讨论】:

感谢您的回复,埃里克。我确实调用了Users.messages: get 函数,我看到labelIds 中出现标签“READ”和“STARRED”(如果我在еру web 界面中清除它们,则它们消失),但标签“IMPORTANT”不一样。即使我在 GMail 界面中看到它,它也不会出现在 labelIds 中。 现在再试一次,昨天还是新的。刚刚通过 API explorer 确认:“id”:“148ad9188820bd16”,“threadId”:“148ad9188820bd16”,“labelIds”:[“INBOX”,“IMPORTANT”,“CATEGORY_UPDATES”], 非常感谢!它现在可以工作了 - 现在我在函数 Users.messages: get 的结果中看到 labelIds 字段中的标签“重要”。

以上是关于如何使用 Google Mail API 检查邮件是不是被标记为“重要”?的主要内容,如果未能解决你的问题,请参考以下文章

Google App Engine:如何使用 send_mail 发送 html

PHP Gmail API:可以发送电子邮件但如何添加收件人电子邮件

如何有效地使用 javax.mail API 发送批量邮件? & 我们可以使用重用认证会话来提高速度吗?

使用 Zend_Mail 时如何验证邮件是不是已发送?

从 Gmail API 获取电子邮件的直接 URL(列出消息)

Zend Mail - 如何在不将电子邮件标记为已打开的情况下阅读