Frage

Ich arbeite in einem Mail-Client-Projekt mit C #. Ich verwende sowohl das POP- und IMAP-Protokoll mit dem Server zu kommunizieren. Das Problem ist, als ich nicht herausfinden kann, warum, wenn ich die UID für eine Meldung mit dem Ergebnis vom POP-Server und der IMAP-Server erhalten mag unterschiedlich ist.

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, ist so anders? In IMAP ist eine weitere Funktion für das? Jede Hilfe ist willkommen. Danke.

War es hilfreich?

Lösung

POP3 und IMAP sind zwei verschiedene Protokolle. Die UIDs durch diese beiden Protokolle verwendet werden, nicht verwandt und sind nicht gleich überhaupt sein soll. In der Tat ist ein POP3 UID eine beliebige Zeichenfolge, während ein IMAP-UID ist eine 32-Bit-Nummer (als Zeichenfolge übertragen werden).

In der Theorie ist es möglich, einen Mail-Server zu schreiben, dass beiden Träger IMAP und POP3 die gleiche UID für beiden Protokolle verwenden, aber ich bin mir nicht bekannt, dass Server, der dies tatsächlich tun würde. In der Praxis müssen Sie POP3 und IMAP UIDs UIDs als unabhängige Werte.

zur Behandlung von

RFC 1939 (POP3): The unique-ID einer Nachricht ist eine beliebige Server bestimmte Zeichenkette, die aus einer bis 70 Zeichen im Bereich von 0x21 bis 0x7E, die eindeutig eine Botschaft innerhalb eines Maildrop identifiziert und welche verharrt über mehr Sitzungen.

RFC 3501 (IMAP): (Unique Identifier (UID) Message Attribut ist) ein 32-Bit-Wert zu jeder Nachricht zugeordnet, die, wenn sie mit der eindeutigen Kennung Gültigkeitswert verwendet (siehe unten) einen 64-Bit-Wert, muss auf jede andere Nachricht bezieht sich nicht in der Mailbox oder bei jedem Postfach mit demselben Namen für immer.

Andere Tipps

Sehr wichtig IMAP Tatsache

Das ist, was ich gelernt, mit GMail spielen (Ich erwarte, dass andere Systeme gleich sein):

  • sandte eine Botschaft an meinem Posteingang
  • Es verfügt über 45 UID
  • Bewegen Sie die Nachricht an Junk
  • Es hat jetzt UID 5 (weil UID einzigartige pro Mailbox)
  • Bewegen Sie es zurück zu Posteingang
  • Es hat jetzt 46 UID
  • es auf Junk-Gehen Sie zurück
  • Es hat jetzt UID 6
  • erhalten die Idee ...

zog ich die Nachrichten über die GMail.com UI

Soweit ich kann UID sagen ist nur sinnvoll in den neuesten E-Mails in einem Ordner zu finden. Sie können den Befehl Suche ( "UID 34:*) ausführen, um alle Nachrichten in einem Ordner mit der UID 34 oder höher zu erhalten.

Aber nicht starten mit UID als Schlüssel zu dieser Nachricht in einer Datenbank oder Sie werden mit Betrogenen enden.

Ich denke, ich werde die Zeit nehmen, empfängt und Hash mit dem Nachrichteninhalt tatsächlich ein UID mir bekommen kann eine Datenbank eingegeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top