JavaMail (die 2.)

Bitte aktiviere JavaScript!
Hallo,

Dank Eurer Hilfe von gestern kann ich nun mit POP3 eMails lesen und mit SMTP eMails schreiben , danke nochmals.

Nun habe ich aber das Problem (ich will mit den eMails abläufe steuern ...) dass ich immer die "neuen" eMails brauche (die "alten" wurden ja schon verarbeitet).

Ein Abfragen der Flags brachte bei WEB.DE kine ergebnisse (waren nicht gesetzt) .

Dann dachte ich ich setzt diese Flags selbst (im JavaPGM) das ging bei READ_ONLY nicht und READ_WRITE ging bei POP3 nicht.

Deshalb habe ich das Datum/Uhrzeit der letzten eMail gespeichert und ab dann ab diesem Datum gelesen.

So nun die Frage:

- Liegt das am POP3 Protokoll dass das mit diesen Flags (lesen und setzten) nicht geht.
- Welche möglichkeiten hätte ich denn mit POP3 eMails zu markieren (evtl auch in anderen ordner verschieben)
- Ginge das mit IMAP
- ist IMAP von den Properties so ahnlich wie SMTP.

So hoffentlich habt Ihr ein paar Tips für mich.

Keine Angst Programmieren will ich heute nicht -> kommen also keine Fragen mehr


Vielen Dank

Volker.
 
Also mit POP3 habe ich sowas noch nie versucht. Mit IMAP geht das aber auf jeden Fall.

Du musst dir halt nur den store holen, dann den Folder, der Dich interessiert und dann kannst Du neue Emails z.B. mit einer Funktion wie dieser abrufen:
Java:
    public void check() {
        log.trace("check() called.");

        // Loop through all folders that are monitored
        for (Folder folder: folders.values()) {
            try {
                // Loop through all messages.
                Message[] messages = folder.getMessages();
                for (Message message: messages) {
                    // Check if message wasn't seen and wasn't deleted
                    if (!message.isSet(Flags.Flag.SEEN) && !message.isSet(Flags.Flag.DELETED)) {
                        // Mark message as seen.
                        message.setFlag(Flags.Flag.SEEN, true);

                        // Raise NewMailEvent
                        raiseNewEmailEvent(message);
                    }
                }
            } catch (MessagingException ex) {
                log.error("Exception when reading messages of folder {}.", folder.getName(), ex);
                // So far no handling of this error except logging it.
            }
        }

        log.trace("check() call ended.");
    }
Das ist ein Ausschnitt aus meinem ImapMonitor, den ich einmal geschrieben habe. Da ging es halt u regelmäßiges prüfen von IMAP Postfächern, die einmal hinzugefügt wurden.

Und der Aufbau ist halt relativ einfach über das Setzen von properties und dann ein
Java:
Session session = Session.getDefaultInstance(properties).
Store store = session.getStore(protocol); // z.B. "imaps"
store.connect(server, user, password);
Folder folder = store.getFolder(folderName); // z.B. INBOX
folder.open(Folder.READ_WRITE);
Wobei ich halt in der check Routine mehrere Ordner überwachen konnte, daher da das foreach über folders.

Wenn Du fertig bist, dann Folder auch schließen und so! (Wobei ich die Verbindung offen halte, aber das ist ein anderes Thema.)
 
Hallo,

mit diesen Flags wäre mir das schon lieber.

Dann werde ich mir dieses IMAP mal antuen (werde bestimmt Eure Hilfe brauchen)

Durch IMAP brauche ich ja auch das SMTP dann nicht mehr ?


Viele Grüße

Volker.
 
Nun habe ich aber das Problem (ich will mit den eMails abläufe steuern ...) dass ich immer die "neuen" eMails brauche (die "alten" wurden ja schon verarbeitet).
Wenn Du damit etwas steuern willst, würde ich von POP abraten. POP ist ein sehr einfaches System, das darauf ausgelegt ist, Nachrichten von einem Server herunterzuladen und anschließend zu löschen. Wenn Du das konsequent durchziehst, bekommst Du natürlich immer nur neue Nachrichten. POP hat aber einen entscheidenden Nachteil: Du musst pollen, um neue Nachrichten zu erhalten.

Bei IMAP ist das anders. Da kannst Du Dich in der Regel vom Server aktiv informieren lassen, sobald eine neue Mail reinkommt.
 
Hallo,

mit diesen Flags wäre mir das schon lieber.

Dann werde ich mir dieses IMAP mal antuen (werde bestimmt Eure Hilfe brauchen)

Durch IMAP brauche ich ja auch das SMTP dann nicht mehr ?


Viele Grüße

Volker.
IMAP ist nur zum Versenden von Emails. Du versendest Emails immer noch per SMTP.
Aber wenn Du eine Email versendest, dann kannst Du die Emails auch ablegen. Also beim Editieren kannst Du in einem Ordner den Entwurf speichern. Wenn die Email gesendet werden soll, dann landet sie in einer Outbox. Wenn Du sie dann erfolgreich senden konntest, dann schiebst Du sie in den Gesendet Ordner.

Aber Senden musst Du die Email immer noch aktiv per SMTP.
 
Hallo,

danke für den Hinweis (hätte nun beinahe den SMTP teil rausgelöscht)

Das lesen mit imap habe ich eben hinbekommen und siehe da die Flags sind gesetzt.

Dann mache ich jetzt vielleicht doch weiter.

Danke

Viele Grüsse

Volker
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben