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