Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Чтение атрибутов emal


Автор: djiva 15.9.2005, 17:55
Не могу понять что не так, пишу

Код

            // Get the messages from the server
            Message[] messages = inbox.getMessages();
            for (int i = 0; i < messages.length; i++) {
                System.out.println("------------ Message " + (i + 1)
                        + " ------------");

                if (messages[i].isSet(Flags.Flag.DELETED)) {
                    System.out.println("DELETED message");
                }
                if (messages[i].isSet(Flags.Flag.SEEN)) {
                    System.out.println("SEEN message");
                }
                if (messages[i].isSet(Flags.Flag.RECENT)) {
                    System.out.println("RECENT message");
                }
                if (messages[i].isSet(Flags.Flag.ANSWERED)) {
                    System.out.println("ANSWERED message");
                }
                if (messages[i].isSet(Flags.Flag.USER)) {
                    System.out.println("USER  message");
                }
                if (messages[i].isSet(Flags.Flag.FLAGGED)) {
                    System.out.println("FLAGGED message");
                }
                if (messages[i].isSet(Flags.Flag.DRAFT)) {
                    System.out.println("DRAFT message");
                }

                System.out.println(messages[i].getReceivedDate());
                System.out.println(messages[i].getSentDate());
                System.out.println(messages[i].getDisposition());
                System.out.println(messages[i].getDescription());
                System.out.println(messages[i].getMessageNumber());




Код

messages[i].getReceivedDate() 
messages[i].getDisposition()
messages[i].getDescription()
выдают null

И не в один из флагов не заходит.

В чем может быть проблема?



Автор: AntonSaburov 15.9.2005, 18:27
Может дело не в этом коде, а в том, как ты подключился - может тебе дают только список сообщений без каких-либо аттрибутов. Или что-то еще. Лучше бы все целиком посмотреть - от подключения до конца.

Автор: djiva 16.9.2005, 10:21
Вот весь код:

Код

        Properties props = new Properties();

        String host = "pop.mail.ru";
        String username = "iplockstest";
        String password = "123";
        String provider = "pop3";

        try {

            // Connect to the POP3 server
            Session session = Session.getDefaultInstance(props, null);
            Store store = session.getStore(provider);
            store.connect(host, username, password);

            // Open the folder
            Folder inbox = store.getFolder("INBOX");
            if (inbox == null) {
                System.out.println("No INBOX");
                System.exit(1);
            }
            inbox.open(Folder.READ_ONLY);

            // Get the messages from the server
            Message[] messages = inbox.getMessages();
            for (int i = 0; i < messages.length; i++) {
                System.out.println("------------ Message " + (i + 1)
                        + " ------------");

                /*
                 * Flags flags = messages[i].getFlags(); Flags.Flag[] sf =
                 * flags.getSystemFlags(); for (int j = 0; j < sf.length; j++) {
                 * if (sf[j] == Flags.Flag.DELETED) System.out.println("DELETED
                 * message"); else if (sf[j] == Flags.Flag.SEEN)
                 * System.out.println("SEEN message"); else if (sf[j] ==
                 * Flags.Flag.RECENT) System.out.println("RECENT message"); }
                 */

                if (messages[i].isSet(Flags.Flag.DELETED)) {
                    System.out.println("DELETED message");
                }
                if (messages[i].isSet(Flags.Flag.SEEN)) {
                    System.out.println("SEEN message");
                }
                if (messages[i].isSet(Flags.Flag.RECENT)) {
                    System.out.println("RECENT message");
                }
                if (messages[i].isSet(Flags.Flag.ANSWERED)) {
                    System.out.println("ANSWERED message");
                }
                if (messages[i].isSet(Flags.Flag.USER)) {
                    System.out.println("USER  message");
                }
                if (messages[i].isSet(Flags.Flag.FLAGGED)) {
                    System.out.println("FLAGGED message");
                }
                if (messages[i].isSet(Flags.Flag.DRAFT)) {
                    System.out.println("DRAFT message");
                }

                System.out.println(messages[i].getReceivedDate());
                System.out.println(messages[i].getSentDate());
                System.out.println(messages[i].getDisposition());
                System.out.println(messages[i].getDescription());
                System.out.println(messages[i].getMessageNumber());
                //                System.out.println(messages[i].get);

            }
            // Close the connection
            // but don't remove the messages from the server
            inbox.close(false);
            store.close();




Автор: AntonSaburov 16.9.2005, 12:10
По идее все нормально. Странно. Может все-таки начать искать там, где начинается соеденение ? Листенеры какие-то повесить и прочая.

Просто сейчас мне не запустить твой пример и не проверить.

Автор: igon 19.9.2005, 15:51
Цитата
jGuru: Fundamentals of the JavaMail API
...
Just because a flag exists doesn't mean the flag is supported by all mail servers/providers. For instance, besides deleting messages, the POP protocol supports none of them.


Возможно, mail.ru не поддерживает и
Код

messages[i].getReceivedDate() 
messages[i].getDisposition()
messages[i].getDescription()

getSentDate() и getMessageNumber() ведь показывают корректные значения?!
Попробуй другие mail-сервера или IMAP протокол





Автор: djiva 19.9.2005, 20:36
Уже пробую. Но скорее всего дело в протоколе.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)