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



有人知道如何使用 Ruby 中的"mail"gem 从电子邮件地址数组中获取邮件吗?我已经看到了用于获取未读消息的线程,如下所示:

new_messages = Mail.find(keys: ['NOT','SEEN'])

但是我找不到如何从某个地址获取消息。我试过:

new_messages = Mail.find(keys: ['FROM','example@hello.com'])

但它不起作用。

我知道 IMAP 协议的第 6.4.4 节指出了可用于搜索邮件的不同搜索标志,但我似乎无法使其工作。

不幸的是,两者都不是

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.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') }  

最新更新