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

-- 
とみたまさひろ <tommy / tmtm.org>
http://twitter.com/tmtms
D68F 8F55 7F6C 5908 88EB  1EBA 25ED DEE7 BBE8 1752