From: "とみたまさひろ" Date: 2017-08-22T14:30:24+09:00 Subject: [ruby-list:50559] Re: IMAP IDLE On Tue, 22 Aug 2017 07:37:20 +0900 emo@nifs.ac.jp wrote: > インターネット上のブログ等の情報によると、 > DOCOMO のメールで IMAP の IDLE を使って > プッシュ送信を実現しているという様な記事 > があったので、下記のようなプログラムを書いた > のですが、Net::IMAP#idle を実行した時点で > 接続が切れてしまうようなのですが、 > どのようにすれば良いのでしょうか? IDLE発行後、数分経過後に切断されるんであれば、そういうサーバーの実装もありえます。 その場合は、IMAPクライアントとしては、サーバーから切断される前にIDLEを終わらせて、またIDLEを発行するようにすればいいと思います。 Ruby の Net::IMAP の場合は idle メソッドに引数でタイムアウト値を与えることができます。 # 日本語のマニュアルには書かれてないようですが。 IDLE発行後すぐに切断されているようならDOCOMOのIMAPサーバーがIDLEにちゃんと対応していないのかもしれません。 手でIMAPコマンドを叩いて確かめてみるのもいいと思います。 自分はDOCOMOの契約がないので試せません。 % openssl s_client -connect imap.spmode.ne.jp:993 a LOGIN ユーザ名 パスワード a SELECT INBOX a IDLE ここで待ち状態になるはず。抜けるには DONE a LOGOUT -- とみたまさひろ http://twitter.com/tmtms D68F 8F55 7F6C 5908 88EB 1EBA 25ED DEE7 BBE8 1752