Abrufen aller ungelesenen E-Mails mit Javamail mit POP3-Protokoll

Ich versuche, Zugriff auf mein gmail-Konto und rufen Sie die Informationen aller ungelesenen E-Mails aus.

Habe ich geschrieben das mein code nach verweisen viele links. Ich gebe ein paar links für Referenz.


Senden & Empfangen Sie E-Mails über ein Google Mail-Konto mit Hilfe von Java

Java-Code Empfangen von E-Mails mit JavaMailAPI

Testen mein code, ich habe ein Gmail-Konto. So erhielt ich 4 Nachrichten von Gmail.
Ich starte meine Anwendung nach der überprüfung der Anzahl der mails. Zeigte das richtige Ergebnis. 4 ungelesene mails.
Alle Informationen wurde, angezeigt wird (z.B. Datum, Absender, Inhalt, Thema, etc.)

Ich dann eingeloggt in meinen account, lese die E-Mails und erneut meine Anwendung.
Nun die Anzahl der ungelesenen Nachricht sollte 3 sein, aber es zeigt "Keine. Ungelesene Nachrichten : 0"

Kopiere ich den code hier.

public class MailReader

{

    Folder inbox;

    //Constructor of the calss.

    public MailReader() {
        System.out.println("Inside MailReader()...");
        final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

        /* Set the mail properties */

        Properties props = System.getProperties();
        //Set manual Properties
        props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
        props.setProperty("mail.pop3.socketFactory.fallback", "false");
        props.setProperty("mail.pop3.port", "995");
        props.setProperty("mail.pop3.socketFactory.port", "995");
        props.put("mail.pop3.host", "pop.gmail.com");

        try

        {

            /* Create the session and get the store for read the mail. */

            Session session = Session.getDefaultInstance(
                    System.getProperties(), null);

            Store store = session.getStore("pop3");

            store.connect("pop.gmail.com", 995, "[email protected]",
                    "paasword");

            /* Mention the folder name which you want to read. */

            //inbox = store.getDefaultFolder();
            //inbox = inbox.getFolder("INBOX");
            inbox = store.getFolder("INBOX");

            /* Open the inbox using store. */

            inbox.open(Folder.READ_ONLY);

            /* Get the messages which is unread in the Inbox */

            Message messages[] = inbox.search(new FlagTerm(new Flags(
                    Flags.Flag.SEEN), false));
            System.out.println("No. of Unread Messages : " + messages.length);

            /* Use a suitable FetchProfile */
            FetchProfile fp = new FetchProfile();
            fp.add(FetchProfile.Item.ENVELOPE);

            fp.add(FetchProfile.Item.CONTENT_INFO);

            inbox.fetch(messages, fp);

            try

            {

                printAllMessages(messages);

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

            }

            catch (Exception ex)

            {
                System.out.println("Exception arise at the time of read mail");

                ex.printStackTrace();

            }

        }

        catch (MessagingException e)
        {
            System.out.println("Exception while connecting to server: "
                    + e.getLocalizedMessage());
            e.printStackTrace();
            System.exit(2);
        }

    }

    public void printAllMessages(Message[] msgs) throws Exception
    {
        for (int i = 0; i < msgs.length; i++)
        {

            System.out.println("MESSAGE #" + (i + 1) + ":");

            printEnvelope(msgs[i]);
        }

    }

    public void printEnvelope(Message message) throws Exception

    {

        Address[] a;

        //FROM

        if ((a = message.getFrom()) != null) {
            for (int j = 0; j < a.length; j++) {
                System.out.println("FROM: " + a[j].toString());
            }
        }
        //TO
        if ((a = message.getRecipients(Message.RecipientType.TO)) != null) {
            for (int j = 0; j < a.length; j++) {
                System.out.println("TO: " + a[j].toString());
            }
        }
        String subject = message.getSubject();

        Date receivedDate = message.getReceivedDate();
        Date sentDate = message.getSentDate(); //receivedDate is returning
                                                //null. So used getSentDate()

        String content = message.getContent().toString();
        System.out.println("Subject : " + subject);
        if (receivedDate != null) {
            System.out.println("Received Date : " + receivedDate.toString());
        }
        System.out.println("Sent Date : " + sentDate.toString());
        System.out.println("Content : " + content);

        getContent(message);

    }

    public void getContent(Message msg)

    {
        try {
            String contentType = msg.getContentType();
            System.out.println("Content Type : " + contentType);
            Multipart mp = (Multipart) msg.getContent();
            int count = mp.getCount();
            for (int i = 0; i < count; i++) {
                dumpPart(mp.getBodyPart(i));
            }
        } catch (Exception ex) {
            System.out.println("Exception arise at get Content");
            ex.printStackTrace();
        }
    }

    public void dumpPart(Part p) throws Exception {
        //Dump input stream ..
        InputStream is = p.getInputStream();
        //If "is" is not already buffered, wrap a BufferedInputStream
        //around it.
        if (!(is instanceof BufferedInputStream)) {
            is = new BufferedInputStream(is);
        }
        int c;
        System.out.println("Message : ");
        while ((c = is.read()) != -1) {
            System.out.write(c);
        }
    }

    public static void main(String args[]) {
        new MailReader();
    }
}

Habe ich gesucht auf google, aber ich fand, Sie sollten die use-Flags.Flag.GESEHEN, gelesen, ungelesene E-Mails.
Aber das zeigt nicht die richtigen Ergebnisse in meinem Fall.

Kann mir jemand zeigen wo ich vielleicht dabei einige Fehler???

Wenn Euch müssen ganze code, ich kann meinen Beitrag Bearbeiten.

Hinweis: bearbeitete ich meine Frage, auch ganze code anstelle von snippet-ich hatte weiter oben geschrieben.

InformationsquelleAutor der Frage MysticMagicϡ | 2012-10-30

Schreibe einen Kommentar