2

pop3 プロトコルを使用して Outlook の受信トレイを読み取る簡単なプログラムを実装しようとしましたが、未読メールが 2 件あってもサーバーからメールが返されません。この問題はなぜですか?Microsoft Exchange サーバーの設定に関連していますか?

public void retrieveEmail() {
        // JavaMail API - Exchange server to allow IMAP access

        // mail server connection parameters
        String user = "";
        String password = "";

        // connect to my pop3 inbox
        Properties properties = new Properties();

        properties.put("mail.store.protocol", "pop3");
        properties.put("mail.pop3.host", host);
        properties.put("mail.pop3.port", "110");
        properties.put("mail.pop3.user", user);
        properties.put("mail.pop3.timeout", "158000");
        properties.put("mail.pop3.connectiontimeout", "158000");

        Session session = Session.getInstance(properties);
        session.setDebug(true);

        Store store = null;
        Folder inbox = null;

        try {
            store = session.getStore("pop3");
            store.connect(host, user, password);
            inbox = store.getFolder("Inbox");
            inbox.open(Folder.READ_ONLY);

            // get the list of inbox messages
            int totalMsg = inbox.getMessageCount();
            int unread = inbox.getUnreadMessageCount();
            Message[] messages = inbox.getMessages();
            Message[] msg = inbox.search(new FlagTerm(new Flags(Flag.SEEN), false));

            System.out.print("size " + messages .length);
            if (messages.length == 0) System.out.println("No messages found.");

            for (int i = 0; i < messages.length; i++) {

                // stop after listing ten messages
                if (i > 10) {
                    System.exit(0);
                    inbox.close(true);
                    store.close();
                }

                System.out.println("Message " + (i + 1));
                System.out.println("From : " + messages[i].getFrom()[0]);
                System.out.println("Subject : " + messages[i].getSubject());
                Object content = messages[i].getContent();

                if (content instanceof String)  
                    System.out.print((String)content);  
                /* text/plain = String
                 * multipart" = Multipart
                 * MimeMessage
                 * input stream = Unknown Data Handler 
                 */

            }

            inbox.close(true);
            store.close();

        } catch (NoSuchProviderException e) {
            System.out.println(e.getMessage());
        } catch (MessagingException e) {
            System.out.println(e.getMessage());

        } catch (IOException e) {
            System.out.println(e.getMessage());
        } 
    }

編集1:

私はそれをデバッグし、フォルダ内の変数の合計がゼロであることを認識しています

助けてください。

ありがとう。

4

1 に答える 1

0

メール管理者に、上記のメール アカウントの「エイリアス」の交換値を問い合わせてください。たとえば、値が「バナナ!」に設定されているとします。次に、store.getFolder("Inbox"); の代わりに store.getFolder("Bananas!") を読み取るように上記のコードを変更する必要があります。

于 2012-11-12T04:27:41.297 に答える