有人知道如何使用 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') }