Perhaps there’s another way to do this without polling, but I added the
IMAP IDLE (and associated DONE) command to Shugo M.'s excellent
For those unaware, RFC 2177 adds the IDLE command to the IMAP
specification which allows the server to notify clients when a mailbox
has changed state (particularly when new mail has arrived).
When issued, an IDLE command requires a DONE to complete it, which
should be issued at least every 29 minutes, to prevent a timeout.
Anyway, here’s the (tiny) piece of code I wrote to implement this; I
hope it’s useful. Feel free to tell me what I did wrong.
cmd = “IDLE”
tag = generate_tag
put_string(tag + " " + cmd)
cmd = “DONE”