J'ai un objet de message en plusieurs parties et je souhaite convertir la pièce jointe dans ce message en objet de fichier python. Est-ce possible? Si c'est possible, quelle méthode ou classe en Python je devrais regarder pour faire une telle tâche?Obtention de la pièce jointe à un objet fichier python
Répondre
Je ne comprends pas vraiment ce que vous entendez par "objet de message multipart email". Voulez-vous dire un objet appartenant à la classe email.message.Message
?
Si c'est ce que vous voulez dire, c'est simple. Dans un message multipartie, la méthode get_payload
renvoie une liste de parties de message (chacune étant elle-même un objet Message
). Vous pouvez itérer sur ces parties et examiner leurs propriétés: par exemple, la méthode get_content_type
renvoie le type MIME de la pièce et la méthode get_filename
renvoie le nom de fichier de la pièce (s'il en est spécifié dans le message). Ensuite, lorsque vous avez trouvé la bonne partie du message, vous pouvez appeler le get_payload(decode=True)
pour obtenir le contenu décodé.
>>> import email
>>> msg = email.message_from_file(open('message.txt'))
>>> len(msg.get_payload())
2
>>> attachment = msg.get_payload()[1]
>>> attachment.get_content_type()
'image/png'
>>> open('attachment.png', 'wb').write(attachment.get_payload(decode=True))
Si vous extraire des pièces jointes de programmation des messages électroniques que vous avez reçus, vous voudrez peut-être prendre des précautions contre les virus et les chevaux de Troie. En particulier, vous devriez probablement seulement extraire les pièces jointes dont vous connaissez les types MIME, et vous voudrez probablement choisir votre propre nom de fichier, ou au moins nettoyer la sortie de get_filename
.
Cela fonctionne très bien. Merci. –
Les messages HTML contiennent souvent des images dans les pieds de page, qui sont également envoyés en pièce jointe. Vous pouvez les distinguer des "vrais" attachements en regardant la disposition du contenu: les images en ligne commencent par "en ligne", tandis que les pièces jointes commencent par "pièce jointe". Il n'y a pas de méthode pour obtenir la disposition du contenu, mais vous pouvez appeler part.get ('Content-Disposition'). Startswith ('attachment') si vous êtes uniquement intéressé par les pièces jointes. – jrial
Voici la solution de travail, les messages sont sous forme serveur IMAP
self.imap.select()
typ, data = self.imap.uid('SEARCH', 'ALL')
msgs = data[0].split()
print "Found {0} msgs".format(len(msgs))
for uid in msgs:
typ, s = self.imap.uid('FETCH', uid, '(RFC822)')
mail = email.message_from_string(s[0][1])
print "From: {0}, Subject: {1}, Date: {2}\n".format(mail["From"], mail["Subject"], mail["Date"])
if mail.is_multipart():
print 'multipart'
for part in mail.walk():
ctype = part.get_content_type()
if ctype in ['image/jpeg', 'image/png']:
open(part.get_filename(), 'wb').write(part.get_payload(decode=True))
- 1. fichier pièce jointe suppression
- 2. Comment envoyer un fichier pièce jointe?
- 3. Vérifier la pièce jointe
- 4. Accès à la pièce jointe d'événement SharePoint
- 5. Enregistrement de la pièce jointe
- 6. PHP: taille du fichier de pièce jointe
- 7. problème avec la pièce jointe
- 8. facebook python-sdk post_to_wall pièce jointe
- 9. Pièce jointe Android Gmail
- 10. formulaire de pièce jointe C#
- 11. Comment lire pièce jointe
- 12. Pièce jointe Sharepoint Supprimer Nom du fichier
- 13. Aperçu InfoPath Pièce jointe
- 14. php pièce jointe
- 15. view pdf en pièce jointe
- 16. postale avec pièce jointe
- 17. Comment envoyer un fichier pdf généré en pièce jointe dans un email à partir de C#?
- 18. Envoyer un fichier PDF en pièce jointe par courrier électronique
- 19. Pièce jointe d'email en PHP?
- 20. Envoyer un fichier en pièce jointe dans l'objectif c
- 21. sp_send_dbmail codage de pièce jointe
- 22. wordpress catégorie conditionnelle à la page de pièce jointe
- 23. ATT00006.dat fichier attaché automatiquement dans la pièce jointe
- 24. Comment déterminer la taille d'un fichier à partir d'une pièce jointe à un message POP3
- 25. Problème de pièce jointe d'un fichier e-mail binaire
- 26. Ajouter une pièce jointe à un noeud de données ListInstance?
- 27. image de pièce jointe à un mail .. comment dans android?
- 28. .NET C#: Lire la pièce jointe à partir de HttpWebResponse
- 29. télécharger la pièce jointe avec Java
- 30. Ajouter une pièce jointe à l'email
Quelle partie de la bibliothèque Python avez-vous lu jusqu'à présent? Avez-vous regardé les bibliothèques pop ou imap? –
J'ai seulement regarder dans email.message.Message et mimetools.Message. Ok, je vais lire dans la pop et l'image et voir ce que je peux faire avec. –