Tag: imap

在Ruby Net :: IMAP中选择邮箱“已发送邮件”或“所有邮件”

我正在尝试使用Ruby中的Net :: IMAP来搜索我发送的所有邮件,但是我在选择除了INBOX之外的任何东西时遇到了麻烦。 imap.select(‘INBOX’) 工作正常,但是 imap.select(‘Mail/sent-mail’) 如在Net :: IMAP文档中显示给我“未知邮箱”。 顺便说一下,这将与gmail一起使用。 我也尝试在我的imap.search()中添加“in”,“anywhere”,但是没有解析。 当前代码: imap.select(‘INBOX’) now = Time.now.localtime – 1209600 #two weeks since = now.day.to_s() + “-” + Date::MONTHNAMES[now.month] + “-” + now.year.to_s() puts “since” puts since begin mail_ids = imap.search([“FROM”, “me”, “SINCE”, since]) mail_ids.each do |id| text = imap.fetch(id, ‘BODY[HEADER.FIELDS (SUBJECT)]’).to_s.split(“{“).second.chop puts text end end

仅从IMAP服务器获取新邮件

我正在编写一个客户端应用程序,它从IMAP服务器获取电子邮件,然后将它们存储在数据库中。 问题是,一旦我检查了邮件,下次我只想下载自那以后到达的邮件。 因此,如果我在两小时前检查过服务器邮件,我只想收到过去两小时内收到的邮件。 我可以在SINCE DATE使用SEARCH,但是没有时间支持+日期可能很容易被欺骗。 我也尝试了RECENT标志,但这似乎不适用于gmail(在ruby中它每次都显示为nil)。

在ruby中支持IMAP IDLE

好吧,我已经好几个小时了。 我认为带有ruby 1.9的net / imap.rb支持idle命令,但还没有。 任何人都可以帮我实现吗? 从这里开始 ,我会这样做: class Net::IMAP def idle cmd = “IDLE” synchronize do tag = generate_tag put_string(tag + ” ” + cmd) put_string(CRLF) end end def done cmd = “DONE” synchronize do put_string(cmd) put_string(CRLF) end end end 但imap.idle只是返回零。