正在搜索多个标签 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')
我在我的 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')