# javamail und filterung bekannter nachrichten



## shift42 (3. Okt 2011)

kann ich javamail dazu anweisen nur bestimmte nachrichten herunterzuladen (z.b. alle die nach einem bestimmten zeitpunkt empfangen wurden). oder nur die header runterzuladen und diese filterung ggf selbst durchzuführen?

ich möchte vermeiden, daß bereits heruntergeladene emails nicht noch einmal heruntergeladen werden (wenn die mails auf dem server bleiben und dort nicht gelöscht werden).

bisher mache ich das so:


```
class MailAuthenticator extends Authenticator {

    @Override
    public PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("USER", "PASSWORD");
    }

	public static void main(String[] args) {
        try {
            Properties properties = new Properties();

            properties.put("mail.pop3.starttls.enable", "true");

            Session session = Session.getInstance(properties, new MailAuthenticator());
            Store store = session.getStore("pop3");
            store.connect("SERVER", null, null);

            Folder inbox = store.getFolder("INBOX");

            inbox.open(Folder.READ_ONLY);

            Message[] messages = inbox.getMessages();

            for (Message message : messages) {
                // header und content auslesen
            }

            inbox.close(true);
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }
}
```


----------



## homedom (5. Okt 2011)

Hallo shift42,
bei POP3 besteht die Möglichkeit alle UIDs der auf dem Server befindlichen Mails abzurufen ohne dass die Mails komplett abgerufen werden. Hier ein Auszug aus der JavaMail Api Documentation:


> The POP3 provider supports the POP3 UIDL command, see POP3Folder.getUID(). You can use it as follows:
> 
> if (folder instanceof com.sun.mail.pop3.POP3Folder) {
> com.sun.mail.pop3.POP3Folder pf =
> ...


----------



## shift42 (6. Okt 2011)

vielen dank


----------



## stone71 (7. Okt 2011)

Also die angezeigten Sourcen holen noch keine Nachrichten. Hier sind bisher nur Referenzen vorhanden. Die Daten, die Du zu jeder Mail holst, die holst Du erst durch die einzelnen get-Methoden.
Das Problem ist, dass Du zuerst am Besten ein fetch auf die Daten machst, die Du anzeigen möchtest.

Dafür solltest Du die Klasse FetchProfile nutzen.
FetchProfile (JavaMail API documentation)


----------

