J'essaie d'obtenir un identifiant unique qui ne change pas pendant le fonctionnement. Je pense que l'UID n'est pas bon. Donc, je pense que "Message-ID" est la bonne chose, mais je ne sais pas comment l'obtenir. Je sais juste imap.fetch (uid, 'XXXX'), N'importe qui a une solution ?.Comment obtenir un 'Message-ID' en utilisant imaplib
Répondre
De la documentation IMAP lui-même:
numéros de message IMAP4 changent à mesure que les changements de boîte aux lettres; en particulier, après qu'une commande EXPUNGE effectue des suppressions, les messages restants sont renumérotés. Il est donc fortement conseillé d'utiliser les UID à la place, avec la commande UID.
Discussion au SO: About IMAP UID with imaplib
IMAP4.fetch(message_set, 'UID')
Fetch est la meilleure façon d'obtenir l'UID du message
Et pour obtenir l'ID de message que vous pourriez faire quelque chose comme ça, mais pas tous les messages peuvent avoir un identifiant de message.
server.select(imap_folder)
# List all messages
typ, data = server.search(None, 'ALL')
# iterate through messages
for num in data[0].split():
typ, data = server.fetch(num, '(BODY[HEADER.FIELDS (MESSAGE-ID)])')
# parse data to get message id
@pyfunc: Mais la réponse acceptée à la question que vous avez liée aux états que 'Note: UID est changé, mais le Message-Id ne sera pas changé au cours de toute opération sur ce courrier électronique'. –
Ouais, la documentation lib IMAP contredit cette discussion – pyfunc
L'UID ne changera pas, mais la question liée à parle de déplacer un message vers une autre boîte aux lettres. Après le déménagement, l'UID sera différent - c'est vraiment un nouveau message dans un endroit différent. –
Vous pouvez essayer ce code python pour récupérer les informations d'en-tête de tous les messages.
import imaplib
import email
obj = imaplib.IMAP4_SSL('imap.gmail.com', 993)
obj.login('username', 'password')
obj.select('folder_name')
resp,data = obj.uid('FETCH', '1:*' , '(RFC822.HEADER)')
messages = [data[i][1].strip() + "\r\nSize:" + data[i][0].split()[4] + "\r\nUID:" + data[i][0].split()[2] for i in xrange(0, len(data), 2)]
for msg in messages:
msg_str = email.message_from_string(msg)
message_id = msg_str.get('Message-ID')
Il est beaucoup plus facile méthode pour cette ...
typ, data = obj.fetch(num, '(BODY[HEADER.FIELDS (MESSAGE-ID)])')
msg_str = email.message_from_string(data[0][1])
message_id = msg_str.get('Message-ID')
print message_id
Hope this helps!
result, data = imapconnection.uid('search', None, "ALL") # search and return uids instead
latest_email_uid = data[0].split()[-1]
result, data = imapconnection.uid('fetch', latest_email_uid, '(RFC822)')
raw_email = data[0][1]
Il serait utile que vous ajoutiez quelques explications à votre message. En programmation pour n'importe quel langage ou système, la * logique * derrière est la plus importante, et le * code * est secondaire à la logique - comprendre la logique aide les gens à apprendre à écrire ce code plus tard, et à le modifier leurs besoins. – CodeMouse92
- 1. Comment copier un message d'un serveur imap vers un autre serveur imap en utilisant Python imaplib?
- 2. Comment récupérer un corps d'e-mail en utilisant imaplib en python?
- 3. Comment répondre à un e-mail en utilisant Python imaplib et inclure le message d'origine?
- 4. Imaplib: comment supprimer un e-mail de Gmail?
- 5. Comment désérialiser un dictionnaire en utilisant DataContractJsonSerializer?
- 6. Python imaplib Gmail authentifie l'échec
- 7. Comment obtenir un élément en utilisant javaScript
- 8. Fetch un email avec imaplib mais ne marquer comme SEEN
- 9. Suppression de google IMAP (python, imaplib)
- 10. Comment obtenir ID pour supprimer un enregistrement en utilisant jquery?
- 11. Comment obtenir un emplacement vérifié en utilisant HTML5?
- 12. Comment obtenir un objet aléatoire en utilisant Linq
- 13. comment obtenir l'URL en utilisant un chemin relatif
- 14. Comment obtenir un élément HTML par texte en utilisant XPath?
- 15. Comment obtenir un enregistrement en utilisant EXECUTE IMMEDIATE?
- 16. Comment obtenir un champ d'accès dans Delphi en utilisant RTTI?
- 17. Comment obtenir un peu de texte en utilisant jQuery
- 18. comment obtenir mon UIWindow en utilisant UIApplication?
- 19. Comment obtenir des cookies en utilisant HttpClient
- 20. obtenir json en utilisant php
- 21. Comment créer un e-mail et l'envoyer à une boîte aux lettres spécifique avec imaplib
- 22. obtenir un titre iframe page de javascript en utilisant jquery
- 23. Comment obtenir l'attribut lang en HTML en utilisant JavaScript?
- 24. Comment obtenir l'année en cours en utilisant SQL sur Oracle?
- 25. Comment obtenir des éléments alternatifs en utilisant Enumerable en C#
- 26. Comment obtenir l'année en cours en utilisant VBA
- 27. Comment obtenir uniquement des images en utilisant scandir en PHP?
- 28. Obtenir Java.lang.NullPointerException en utilisant SharedPreferences
- 29. Obtenir un rapport de JasperServer en utilisant SOAP
- 30. Obtenir l'autorisation pour un dossier SVN en utilisant SharpSVN
L'ID de message ne change-t-il pas également pendant le fonctionnement? –
@ Manoj Govindan: Non, Message-Id ne sera pas modifié pendant une opération. – Avadhesh
Cela change entre les sessions - l'UID reste le même - ai-je raison? – mrmnmly