3

JavaMailAPIを使用してmailinatorsメッセージにアクセスしようとしています。

サーバーなどに正しく接続できますが、メッセージを読むときに「フォルダが開いていません」という例外が表示され続けます。フォルダが開いているかどうかを確認しているときと、フォルダを開いていない場合は、どちらも役に立ちません。なんらかの理由でmailinatorが接続を終了したと思います。

getContentを使用せずにメッセージのinputstreamを取得しようとすると、inputstreamから正常に読み取ることができ、メッセージのスタイルなどが含まれていますが、何らかの理由で、inputstreamから読み取ったデータにメッセージ本文が含まれていないようです。

これがmailinatorに関するものである場合、またはpop3やその他の読みやすいものをサポートする他のランダムな電子メール読み取りサービスを提供できる場合は、このプロジェクトでmailinatorを使用するかどうかは問題ではありません。

私の現在のメール読み取りコード。

private void checkMail(String user) {
    Properties props = new Properties();
    Session session = Session.getDefaultInstance(props, null);
    try {
        Store store = session.getStore("pop3");
        store.connect("pop.mailinator.com", 110, user, "12345678");
        Folder inbox = store.getFolder("inbox");
        if(inbox == null) {
            System.out.println("no inbox");
        } else {
            inbox.open(Folder.READ_ONLY);
            for(Message message: inbox.getMessages()) {

                byte[] buffer = new byte[10000];

                int read = 0;

                try {

                    while((read = message.getInputStream().read(buffer, 0, 1024)) > 0) {
                        for(int i = 0; i < buffer.length; i++) {
                            System.out.print((char)buffer[i]);
                        }
                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                /*try {
                    System.out.println(message.getContent().toString());
                } catch (IOException e) {
                    e.printStackTrace();
                }*/
            }
        }
        inbox.close(false);
        store.close();
    } catch (NoSuchProviderException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (MessagingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

また、inputstreamから読み取る場合、inputstreamは決して終了せず、最初からやり直すだけのように見えます。私の目的は、メッセージの本文と件名を取得することです。

4

2 に答える 2

0

メッセージから InputStream を読み取っている場合は、明らかにフォルダーが開いています。「フォルダが開いていません」という例外が発生するのはいつですか? プロトコル トレースは何を示していますか? サーバーが問題のポートであると思われる場合は、Gmailを使用してみてください。また、getDefaultInstance の使用を修正する必要があります

于 2012-05-22T20:35:53.233 に答える