Question

Je travaille dans un projet de client de messagerie en utilisant C #. J'utilise à la fois le POP et le protocole IMAP pour communiquer avec le serveur. Le problème est que je ne peux pas comprendre pourquoi quand je veux l'UID d'un message que le résultat du serveur POP et le serveur IMAP sont différents.

POP
C: UIDL 1
S: +OK 1 UID2-1269789826

et

IMAP
C: $ FETCH 1 (UID)
S: * 1 FETCH (UID 2)
S: $ OK Fetch completed.

Pourquoi le résultat pour obtenir l'UID est si différent? Dans IMAP est une autre fonction pour cela? Toute aide est la bienvenue. Merci.

Était-ce utile?

La solution

POP3 et IMAP sont deux protocoles distincts. Les UIDs utilisés par ces deux protocoles ne sont pas liés et ne sont pas censés être la même du tout. En fait, un UID POP3 est une chaîne arbitraire tandis qu'un UID IMAP est un nombre de 32 bits (transmis sous forme de chaîne).

En théorie, il est possible d'écrire un serveur de messagerie qui prend en charge les protocoles IMAP et POP3 utilisent le même UID pour les deux protocoles, mais je ne suis pas au courant de tout serveur qui fait ce faire. Dans la pratique, vous devez traiter POP3 UID et IMAP comme UID valeurs sans rapport avec.

RFC 1939 (POP3): L'identificateur unique d'un message est une chaîne déterminée par le serveur arbitraire, constitué d'un à 70 caractères dans la plage de 0x21 à 0x7E, qui identifie de manière unique un message au sein d'un dépôt de courrier et qui persiste à travers les sessions.

RFC 3501 (IMAP): (identificateur unique (UID) Attribut du message est) une valeur 32 bits attribué à chaque message, qui, lorsqu'il est utilisé avec la valeur de validité d'identifiant unique (voir ci-dessous) forme une valeur 64 bits qui NE DOIT PAS se référer à tout autre message dans la boîte aux lettres ou une boîte aux lettres ultérieure avec le même nom pour toujours.

Autres conseils

Très important fait IMAP

Ce que j'ai appris à jouer avec GMail (je pense d'autres systèmes soient les mêmes):

  • Envoyer un message à ma boîte de réception
  • Il a UID 45
  • Déplacer le message indésirable
  • Il a maintenant UID 5 (car UID est unique par boîte aux lettres)
  • rabattez la boîte de réception
  • Il a maintenant 46 UID
  • rabattez indésirable
  • Il a maintenant UID 6
  • Obtenir l'idée ...

Je déplacé les messages à l'aide de l'interface utilisateur GMail.com

Pour autant que je peux dire UID est seulement utile pour trouver les derniers e-mails dans un dossier. Vous pouvez exécuter la commande Recherche ( "UID 34:*) pour obtenir tous les messages dans un dossier avec UID 34 ou au-dessus.

Mais ne commencez pas à l'aide UID comme clé de ce message dans une base de données ou vous finirez avec dupes.

Je pense que je vais prendre le temps de hachage reçu et avec le contenu du message pour obtenir un UID je peux réellement mettre dans une base de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top