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

时间:2017-07-16 20:16:03

标签: 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'])

但它不起作用。

我知道第6.4.4 of the IMAP protocol部分表示您可以用来搜索邮件的不同搜索标记,但我似乎无法使其发挥作用。

2 个答案:

答案 0 :(得分:1)

不幸的是,

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

,也不

Mail.find( keys: "FROM #{from_address}" )

的工作。然而,有用的是引用电子邮件地址:

Mail.find( keys: "FROM \"#{from_address}\”" )

幸运的是,它只是缺少的引号,因为引用电子邮件地址时数组变体也可以正常工作:

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

答案 1 :(得分:0)

尝试使用单个电子邮件地址

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') }  
相关问题