正在搜索多个标签 Gmail API - Rails

Searching for multiple labels Gmail API - Rails

我在我的 rails 应用程序中使用此 gem 与 Gmail 交互 API:https://github.com/gmailgem/gmail

我可以搜索包含一个标签的电子邮件:

require 'gmail'
gmail = Gmail.connect("email@gmail.com", "testpwd")
gmail.mailbox('Urgent')

但是当我尝试搜索多个标签时,出现错误。如何查找包含两个特定标签的所有电子邮件,例如同时包含标签 "Urgent" 和 "Priority" 的电子邮件?

您可以尝试使用交集...

urgent_priority_emails = gmail.mailbox('Urgent').emails & gmail.mailbox('Priority').emails

不过,我记得这可能行不通,因为即使电子邮件是相同的消息,它们也会被视为不同的对象。

一个可行的替代方案...

   urgent_email_message_ids = gmail.mailbox('Urgent').emails.map{|email|email.message_id}
   urgent_priority_emails = gmail.mailbox('Priority').emails.select{|email| urgent_email_message_ids.include?(email.message_id)}

gmail gem 让您使用 Google 搜索过滤器,如下所示:

gmail.mailbox('Urgent').emails(gm: 'label:'Priority')