3 Stimmen

UID für Nachricht von GMail mit javax.mail mit IMAP abrufen

Ich verwende javax.mail, um Mails von GMail über IMAP abzurufen. Ich möchte auch die Tags erhalten, die auf jede E-Mail angewendet werden, so dass ich über alle Ordner im Speicher (die eigentlich Tags sind) und das Herunterladen von E-Mails für jeden anderen iterieren.

Ich habe die Methode getUID von ImapFolder, um die UID für jede Nachricht zu erhalten, und vergleichen Sie sie dann, um dieselbe E-Mail in verschiedenen Ordnern zu erkennen.

Wenn ich z. B. die E-Mail "Hallo" mit den Tags "A" und "B" versehen habe, würde ich die Ordner "Posteingang", "A" und "B" durchlaufen und aus jedem Ordner dieselbe E-Mail erhalten; so könnte ich eine einzige Kopie mit den Tags "Posteingang", "A" und "B" behalten.

Die getUID-Methode gibt jedoch eine ordnerbezogene ID zurück, so dass ein und dieselbe E-Mail in verschiedenen Ordnern unterschiedliche IDs haben kann oder verschiedene E-Mails in verschiedenen Ordnern die gleiche ID haben können. In diesem Beispiel. "HellO" kann als Mail 1 in "A" und als Mail 2 in "B" erscheinen.

Gibt es eine Möglichkeit, eine speicherbezogene ID für jede E-Mail zu erhalten, unabhängig vom Ordner? Oder gibt es eine bessere Möglichkeit, die an eine einzelne E-Mail angehängten Tags zu ermitteln?

3voto

Santiago Palladino Punkte 3472

Ich habe die Antwort von gmail-Foren : Es gibt einen "message-id"-Header, der den von mir gesuchten Wert enthält.

4 Stimmen

Die Message-ID ist in den meisten, aber nicht in allen Fällen eindeutig. Insbesondere automatisierte Absender generieren oft dieselbe ID, oder Sie haben gar keine (ich habe auch schon leere gesehen - Message-ID: ).

1voto

Stefan Schultze Punkte 8850

Ich denke, die einzige Möglichkeit besteht darin, einen Hash zu verwenden, den Sie selbst auf der Grundlage der Kopfzeilen der Nachricht berechnen.

0 Stimmen

Ich denke, es wird dazu kommen müssen, ich wollte es nach Möglichkeit vermeiden, aber es scheint, als gäbe es keinen anderen Weg. Übrigens, die Kopfzeilen sollten Betreff, Von, An, Cc, Datum und... irgendetwas anderes enthalten, um eine E-Mail eindeutig zu identifizieren?

0 Stimmen

Ich würde auf jeden Fall das Header-Feld Message-ID einfügen.

0 Stimmen

Denken Sie über diesen Fall nach: Sie sind in einer Mailgruppe und bekommen eine Mail an diese Gruppe geschickt, aber der Absender schickt die Nachricht gleichzeitig auch explizit an Sie. Dann sollten Sie 2 Mails erhalten, aber die message-id wird die gleiche sein, da sie vom Absender gesendet wurde. Der Betreff und das cc-Datum sind ebenfalls gleich, so dass der Hash gleich ist. Um zu unterscheiden, sollte man Delivered-To zum Hash hinzufügen, das wird die beiden Nachrichten in diesem Fall unterscheiden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X