好吧,我已经好几个小时了.我认为带有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
Run Code Online (Sandbox Code Playgroud)
但imap.idle只是返回零.
我遇到了这个老问题,想自己解决.原来的提问者已经消失了 - 哦.
以下是如何使用IMAP闲置Ruby(这非常酷).这使用原始问题中的引用块和此处的文档.
imap = Net::IMAP.new SERVER, :ssl => true
imap.login USERNAME, PW
imap.select 'INBOX'
imap.add_response_handler do |resp|
# modify this to do something more interesting.
# called every time a response arrives from the server.
if resp.kind_of?(Net::IMAP::UntaggedResponse) and resp.name == "EXISTS"
puts "Mailbox now has #{resp.data} messages"
end
end
imap.idle # necessary to tell the server to start forwarding requests.
Run Code Online (Sandbox Code Playgroud)
你确定它不起作用吗?您是否查看过它通过套接字发送的字符串?
经过一番挖掘后,除非启用了调试,否则 put_string 看起来会返回 nil,这就是 imap.idle 返回 nil 的原因。
因此,您的空闲方法可能会很好地工作,因为它不会抛出错误。
这有助于解释这种行为吗?
如果你想使用调试,请使用Net::IMAP.debug = true
| 归档时间: |
|
| 查看次数: |
3225 次 |
| 最近记录: |