J’imagine que vous avez tous le même problème que moi: comment garder une copie de sauvegarde de ma boite mails IMAP? Au cas où, hein…
Bon, j’aimerai aussi pouvoir lire les mails dans ma sauvegarde…et je suis sous Windows.
J’ai essayé plein de solutions gratuites ou open source… Pas une qui soit correcte!
Alors, comme je voulais essayer Python, je me suis retroussé les manches!
- Et hop un Python 3.9 pour Windows installé avec pip
- Et hop une petite recherche dans la doc Python et sur GitHub.
- donc
pip install IMAPclient
Restait plus qu’à s’inspirer des codes que j’ai trouvés…qui ne font jamais ce que tu cherches…
Aie! Python est un langage des années 50 où si tu n’indentes pas bien ton code, il te balance une erreur à l’exécution. Et comme il te les balance 1 par 1, à chaque exécution…
Donc un petit réglage de Notepad++ pour avoir 4 espaces à la place d’une tabulation et voilà…
le cahier des charges
Je voudrais un dossier pour chaque serveur IMAP (oui, j’en ai plusieurs!) et dedans, un dossier pour chaque compte email (oui, aussi!). Dans le dossier de compte, j’aurai un dossier pour chaque folder de mon server IMAP (INBOX, Sent, …) Enfin, chaque email est un fichier EML (dans l’espoir de trouver un EML viewer que je n’aurai pas à faire).
Comme je veux faire simple, je fais un script Python pour 1 seul compte IMAP. Ensuite je duplique/renomme le script original pour chaque autre compte. Je peux lancer ainsi plus souvent le backup d’un compte que j’utilise souvent et de temps en temps le backup d’un compte qui est peu utilisé.
Vient ensuite le problème du nom du fichier EML pour chaque email. Si je veux faire un backup « intelligent » donc incrémental , je dois pouvoir vérifier si tel mail est déjà backupé ou non. J’ai donc pondu une fonction qui crée toujours le même nom pour un email donné, à partir du contenu du mail puisque celui ci ne changera jamais…
Enfin, si le nom avait le bon gout de pouvoir être trié correctement dans Windows pour avoir toujours les derniers emails en premier dans le dossier, hein …
le résultat
Et bien le résultat, tada! il est là : https://github.com/gilluc/bakimap
GitHub dit : 154 lignes de python!
un exemple d’exécution où je récupère juste les folders IMAP INBOX et Sent:
Du coup, par facilité, je me suis fait une procédure qui les lance tous: bakimap.bat
Les outils complémentaires
Si vous avez suivi (!), je voudrais pouvoir lire mes emails en local (les fameux fichiers EML).
Qwant est mon ami (si!)
J’ai trouvé d’abord dalecoop EML viewer qui ouvre tout fichier EML dès qu’on double-clique dessus!
Mais je voudrais aussi lire mes emails comme dans un lecteur de mails et non 1 par 1 …
c’est là que je suis tombé sur mitec mail viewer !
Double clic sur une ligne de mail ouvre le mail! Et on peut chercher dans ses emails…
Néanmoins, il faut, à chaque démarrage, sélectionner le dossier dans lequel il y a les EML qu’on veut voir… Mr Mitec, on pourrait ré-ouvrir automatiquement le dossier qui était utilisé la dernière fois ??
Conclusion
Depuis, j’ai fait une version multi comptes!
https://github.com/gilluc/bakimap2
Merci qui?
Poster un Commentaire