1

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

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

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

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

但它不起作用。

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

4

2 回答 2

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}\”"] )
于 2017-09-03T11:46:09.050 回答
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') }  
于 2017-07-16T20:29:08.233 回答