2010-11-13 4 views
7

Also, Gmail IMAP ist ein bisschen "komisch". Sie verwenden IMAP-Ordner, um Labels darzustellen. Ich glaube normalerweise, dass eine E-Mail in IMAP nur zu einem "Ordner" gehören kann, aber mit Google Mail kann eine E-Mail-Nachricht zu vielen "Ordnern" gehören, was uns sehr nahe an den Etiketten liegt.Google Mail IMAP: Gibt es eine Möglichkeit, alle Labels (Ordner) zu finden, in denen sich eine bestimmte Nachricht befindet?

Meine Frage ist, ich schreibe einen Gmail-Client (so dass Dinge wie Markieren, Löschen und Archivieren ein wenig intuitiver als ein Standard-IMAP-Client funktionieren), aber ich würde gerne in der Lage sein, für einen gegebenen anzuzeigen E-Mail, in welchen Ordnern (Labels) es sich befindet.

Soweit ich das beurteilen kann, ist das nicht einfach (ich müsste jede Nachricht in jedem Ordner durchlaufen, um zu sehen, in welchen es sich befindet).

Kennt jemand eine saubere Möglichkeit, dies zu tun? Oder habe ich recht, wenn ich annehme, dass es keinen leichten Weg gibt?

Antwort

7

Google Mail stellt eine Reihe von IMAP-Erweiterungen zur Verfügung, mit denen Autoren von IMAP-Clients über IMAP eine bessere Google Mail-ähnliche Erfahrung erzielen können. Siehe Gmail IMAP Extensions (X-GM-EXT-1).

Um die Beschriftungen für eine bestimmte Nachricht abzurufen, können Sie den IMAP-FETCH-Befehl mit dem Attribut X-GM-LABELS aufrufen. Siehe Access to Gmail labels: X-GM-LABELS

+0

Danke, ich hatte diese spezielle Gmail IMAP-Seite vor einiger Zeit gefunden, kam aber nie zurück und legte sie hierhin. – Redth

-1

Die einfachste (wenn auch nicht idiotensichere) Methode ist es, die Werte der Nachrichten 'Message-ID Header zu erfassen. Dann iterieren die „label“ Ordner und führen Sie IMAP SEARCH entlang der Linien von

A001 SEARCH HEADER MESSAGE-ID "your-msgid-value" 

Wenn Sie irgendwelche Ergebnisse zurück in die unmarkiert SEARCH Antwort, hat die Nachricht den ausgewählten „Ordner“ 's Label.

Verwandte Themen