Extraire les pièces jointes reçues par Thunderbird avec Python

J'ai posté un article Convertir le PDF joint en courrier électronique au format texte avant, et il semble qu'il était assez populaire.

J'écrirai sur la version modifiée.

Dans 18.4. Mailbox - Différents types d'opérations de boîte aux lettres

Il faut faire très attention lors de la mise à jour des boîtes aux lettres qui peuvent être modifiées en même temps par un autre processus. Le format de boîte aux lettres le plus sûr pour effectuer de telles tâches est Maildir, et essayez d'éviter d'utiliser un format de fichier unique comme mbox pour les écritures simultanées.

Et

Il existe plusieurs variantes du format mbox, chacune prétendant combler les lacunes du format d'origine.

Parce qu'il a été écrit comme ceci, dans PDF attaché au courrier ..., il a été lu au format Maildir par procmail / fetchmail de Cygwin. Le format mbox géré par Thunderbird peut être lu par la bibliothèque de boîtes aux lettres de Python (bien que dans certains dialectes), donc j'utilise le binaire officiel de Python.org.

Thunderbidr crée un répertoire qui enregistre le courrier avec 8 caractères aléatoires, vous devez donc réécrire cette zone.

#coding:utf-8

import os
import os.path
import sys

import email
import mailbox
import mimetypes

maildir =
'C:\\Users\\t.uehara\\AppData\\Roaming\\Thunderbird\\Profiles\\abcdef12.default\\Mail\\pop.example.com\\Inbox'

tempdir = 'C:\\Users\\t.uehara\\Downloads\\'

def extractMime(message):

    for part in message.walk():

        if part.get_content_maintype() == 'multipart':
            continue

        fname = part.get_filename()
        if fname != None:

            if fname.find(".zip") != -1:
                zipname = tempdir+fname

                #Ignorer le traitement si le fichier Zip existe
                if os.path.isfile(zipname) == False:
                    fp = open(zipname, 'wb')
                    fp.write(part.get_payload(decode=True))
                    fp.close()
                    print zipname

if __name__ == '__main__':

    for message in mailbox.mbox(maildir):
        extractMime(message)

En plus de sauvegarder le fichier Zip, vous pouvez également lire le fichier journal compressé et effectuer un traitement approprié, mais comme le code source est devenu un peu encombré, je l'ajouterai s'il y a une demande dans les commentaires, etc. ..

Recommended Posts

Extraire les pièces jointes reçues par Thunderbird avec Python
Pièces jointes par e-mail à l'aide de votre compte gmail avec python.
[Automation] Extraire le tableau en PDF avec Python
Valider l'e-mail avec Python
Envoyer des e-mails par Python
Envoyer un e-mail avec Excel en pièce jointe en Python
Envoyer du courrier japonais avec Python3
Grattage au sélénium en Python
Grattage avec chromedriver en python
Débogage avec pdb en Python
Gérer les sons en Python
Grattage avec du sélénium en Python
Envoyer des e-mails avec Python (Outlook)
Grattage avec Tor en Python
Tweet avec image en Python
Extraire le modèle du fichier EML enregistré depuis Thunderbird avec python3.7
Comment extraire n'importe quel rendez-vous dans Google Agenda avec Python
Extraire plusieurs doublons de liste en Python
Reconnaissance des nombres dans les images avec Python
Extraire le fichier xz avec python
Tester avec des nombres aléatoires en Python
GOTO en Python avec Sublime Text 3
Travailler avec LibreOffice en Python: import
[Automation] Extraire les rendez-vous Outlook avec Python
Scraping avec Selenium en Python (Basic)
Analyse CSS avec cssutils en Python
Numer0n avec des objets fabriqués avec Python
Ouvrez UTF-8 avec BOM en Python
Utiliser rospy avec virtualenv dans Python3
Extraire du texte d'images avec Python
Transmission de courrier facile avec Hâte Python3
Utiliser Python mis en pyenv avec NeoVim
Heatmap avec dendrogramme en Python + matplotlib
Lire des fichiers en parallèle avec Python
Générer un mot de passe pour le manuel avec python
Utiliser OpenCV avec Python 3 dans Window
Jusqu'à traiter de python dans Atom
[Python] Envoyez des e-mails avec Outlook
Démarrez avec Python avec Blender
Travailler avec des images DICOM en Python
Envoyer des e-mails via gmail avec Python 3.4.3.
Extraire des chaînes de fichiers avec Python
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
Essayez de vous connecter à qiita avec Python
Test de stress avec Locust écrit en Python
Python3> dans le mot clé> Vrai avec une correspondance partielle?
Surveillance des appareils effectuée par Python On-box de IOS-XE
Essayez de travailler avec des données binaires en Python
Dessinez Nozomi Sasaki dans Excel avec python
Conseils pour gérer les binaires en Python
Envoyer des e-mails à plusieurs destinataires avec Python (Python3)
Envoyer un e-mail avec SES en Python et un message court avec SMS sur SNS
Afficher Python 3 dans le navigateur avec MAMP
Comment utiliser BigQuery en Python
Classe Trump en Python (avec comparaison)
Comment extraire une zone de polygone en Python
Traiter plusieurs listes avec for en Python
Un serveur Web de ligne (avec CGI) en python