Ruby on rails Ruby mail gem-从特定电子邮件地址搜索收件箱

Ruby on rails Ruby mail gem-从特定电子邮件地址搜索收件箱,ruby-on-rails,ruby,email,imap,mail-gem,Ruby On Rails,Ruby,Email,Imap,Mail Gem,有人知道如何使用Ruby中的“邮件”gem从一系列电子邮件地址获取邮件吗?我看到过获取未读消息的线程,如下所示: new_messages = Mail.find(keys: ['NOT','SEEN']) 但是我找不到如何从某个地址获取消息。我试过: new_messages = Mail.find(keys: ['FROM','example@hello.com']) 但它不起作用 “我知道”部分指明了可用于搜索邮件的不同搜索标志,但我似乎无法使其正常工作。对于单个电子邮件地址,请尝试此

有人知道如何使用Ruby中的“邮件”gem从一系列电子邮件地址获取邮件吗?我看到过获取未读消息的线程,如下所示:

new_messages = Mail.find(keys: ['NOT','SEEN'])
但是我找不到如何从某个地址获取消息。我试过:

new_messages = Mail.find(keys: ['FROM','example@hello.com'])
但它不起作用


“我知道”部分指明了可用于搜索邮件的不同搜索标志,但我似乎无法使其正常工作。

对于单个电子邮件地址,请尝试此选项

Mail.all.select { |mail| mail.from.addresses.include?('example@hello.com') }
对于多个,请尝试这个

addresses = ['example@hello.com', 'test@hello.com']
Mail.all.select { |mail| (addresses - mail.from.addresses).empty? } 
如果你想找到第一封邮件,试试这个

Mail.all.find { |mail| mail.from.addresses.include?('example@hello.com') }  
不幸的是,两者都不是

Mail.find( keys: ['FROM', from_address] )
也不是

成功了。然而,有效的方法是引用电子邮件地址:

Mail.find( keys: "FROM \"#{from_address}\”" )
Mail.find( keys: ['FROM', "\"#{from_address}\”"] )
幸运的是,这只是缺少的引号,因为数组变量在引用电子邮件地址时也可以工作:

Mail.find( keys: "FROM \"#{from_address}\”" )
Mail.find( keys: ['FROM', "\"#{from_address}\”"] )

谢谢你,阿米特-这仍然是在加载所有的消息,然后过滤掉吗?我尝试只在实际收件箱中搜索指定的电子邮件以保持快速。我们如何根据“开始日期”和“截止日期”获取电子邮件?