Ich arbeite in einem Mail-Client-Projekt mit C#. Ich verwende sowohl das POP- als auch das IMAP-Protokoll, um mit dem Server zu kommunizieren. Das Problem ist, dass ich nicht herausfinden kann, warum, wenn ich die UID für eine Nachricht erhalten möchte, das Ergebnis vom POP-Server und vom IMAP-Server unterschiedlich sind.So ermitteln Sie die UID einer Nachricht in IMAP
POP
C: UIDL 1
S: +OK 1 UID2-1269789826
und
IMAP
C: $ FETCH 1 (UID)
S: * 1 FETCH (UID 2)
S: $ OK Fetch completed.
Warum das Ergebnis für die UID zu erhalten, so unterschiedlich ist? In IMAP ist eine andere Funktion dafür? Jede Hilfe ist willkommen. Danke.
UID ist nur in Verbindung mit UIDVALIDITY eindeutig und für einen Ordner spezifisch (das IMAP-Protokoll nennt es ein Postfach) (Details siehe http://tools.ietf.org/html/rfc3501#section-2.3.1.1). Obwohl die UID/UIDVALIDITY-Kombination die Duples löst, ist es jedoch nicht garantiert, dass sie intakt bleibt - Server dürfen UIDVALIDITY ändern, obwohl dies nicht empfohlen wird. –
Beachten Sie außerdem, dass Google Mail tatsächlich MSGIDs bereitstellt, die garantiert eindeutig sind und sich nicht ändern. Verwenden Sie die Erweiterung "Gmail-eindeutige Nachrichten-ID" (MSGID), um auf diese Funktion zuzugreifen: https://developers.google.com/gmail/imap_extensions –