通过imap

时间:2015-09-08 09:47:31

标签: ruby-on-rails ruby email imap

我们的平台定期检查我们的一些客户邮箱,寻找已回复的电子邮件,到目前为止,它一直运作良好,但我们最近有一个客户遇到了一个奇怪的问题。

当我连接到IMAP服务器并在给定的时间段内搜索电子邮件时(例如昨天的所有邮件),我只得到一个空列表。但是,当我在客户端检查其邮箱时,我可以看到昨天收到的邮件。她的邮件客户端配置为使用POP,因此我要求她更改为IMAP,因为POP应该从邮件服务器中删除电子邮件。现在她正在使用IMAP,但我仍然无法在邮件服务器上看到任何内容。

要连接到IMAP服务器,我正在使用这些说明:

imap = Net::IMAP.new(server, port, ssl, nil, false) # OK
imap.login(login, pwd) # Authentification Successful
imap.select("INBOX") # Mailbox is OK

要查找昨天的电子邮件,我正在使用这些标准:

imap.search(["SEEN","SINCE","Sep-07-2015"]
imap.search(["SEEN","SINCE","Sep-07-2015"]

我甚至试图查看其他邮箱,以防她的邮件没有到达收件箱,我已经用imap.list('','')列出了她的邮箱,即便如此我也做不到找到任何邮件。感觉她的整个邮箱在服务器上都是空的。然而,我可以在邮件客户端上看到她的电子邮件。

我对此案感到茫然,并想知道是否有人知道可能发生的事情阻止我通过IMAP发现任何电子邮件?

2 个答案:

答案 0 :(得分:1)

您的日期格式似乎不正确:它应与8-Aug-2002相似,而不是Aug-8-2002。查看here了解其他选项。如果这没有帮助,请尝试使用更广泛的标准进行更轻松的搜索,例如imap.search(['SUBJECT', 'hello']),并使用hello代替真正的主题。 This article也可以提供帮助。 干杯!

答案 1 :(得分:0)

你可以在php中使用这个语法,例如yahoo

$inbox='{imap.mail.yahoo.com:993/imap/ssl/novalidate-cert}Inbox';
$mbox = imap_open($inbox,$username,$password);
imap_search($mbox, 'SINCE "'.date('d M Y',strtotime("-1 days")).'"');