Bonjour à tous,
A l'air du tout numérique j'ai tout de même un besoin qui me parait écologiquement proche de 0 mais c'est un besoin pour remplacer l'antique fax (un bien pour un mal).
Je monte un container docker qui est chargé de relever une boite mail et d'imprimer automatiquement les pièces jointes au format pdf des mails présent. La maquette est monté et cela marche assez facilement.
Fetchmail est chargé toutes les x minutes d'aller chercher les mails en imap. Ensuite un bout de script extrait les pièces jointes et les imprime via rlpr. J'ai juste un problème avec l'archivage. Je souhaiterais faire en sorte que les mails imprimés soient déplacés dans un dossier "archives", ce qui permettrait la connexion via un webmail afin de réaliser des recherches. L'idée n'est pas d'installer un webmail sur le container mais d'utiliser celui de notre fournisseur (OVH).
J'ai testé, sans grande conviction, de créer un répertoire "archives" dans le dossier Mail du container mais bien sûr cela ne synchronise pas avec le serveur. Est-ce qu'il existe quelques choses de léger pour juste faire cette opération ?
Merci d'avance.
# utiliser les APIs et les protocoles qui vont bien
Posté par NeoX . Évalué à 3.
tu te connectes en IMAP
il faut donc utiliser les commandes liées à l'IMAP pour creer un dossier et déplacer un email dans ce dossier.
tout autre moyen sera vouer à l'échec
[^] # Re: utiliser les APIs et les protocoles qui vont bien
Posté par Philippe M (site web personnel) . Évalué à 2.
Effectivement je me connecte en imap mais je ne vois pas comment passer les commandes depuis mon container ?
Born to Kill EndUser !
[^] # Re: utiliser les APIs et les protocoles qui vont bien
Posté par NeoX . Évalué à 3.
comment récupères tu les emails ?
tu utilises fetchmail, regardes les options de ce dernier qui permet peut-être de marquer un email comme lu, de le déplacer
sinon, tu fais ranger les emails dans les bons dossiers par le serveur,
puis tu utilises l'option -r ou --folder de fetchmail pour aller lire dans un dossier particulier
autre piste, regarder dans les langages de programmations (python par exemple) comment interagir avec une boite email en IMAP, il y a surement aussi de quoi déplacer un email d'une boite à une autre
[^] # Re: utiliser les APIs et les protocoles qui vont bien
Posté par Philippe M (site web personnel) . Évalué à 2.
Ok merci je vais regarder tout ça.
Born to Kill EndUser !
[^] # Re: utiliser les APIs et les protocoles qui vont bien
Posté par Philippe M (site web personnel) . Évalué à 2.
D'après ce que j'ai compris --folder de fetchmail permet de dire quel "répertoire" aller relever, donc le répertoire doit être existant dans la BAL. Dans mon cas les nouveaux mails doivent rester à la racine et doivent être déplacé uniquement après traitement (impression).
fetchmail.conf
procmail.conf
J'ai comme l'impression que fetchmail n'est pas capable d'envoyer des commandes, autre que pour relever les mails, au serveur.
Born to Kill EndUser !
[^] # Re: utiliser les APIs et les protocoles qui vont bien
Posté par Sacha Trémoureux (site web personnel) . Évalué à 3.
Tu as deux solutions (qui me viennent en tête) :
[^] # Re: utiliser les APIs et les protocoles qui vont bien
Posté par Philippe M (site web personnel) . Évalué à 2.
L'idée de sortir mon python m'a traversé l'esprit mais je trouve dommage de tout refaire "juste" à cause d'un problème de déplacement de mail.
imap-cli a l'air d'être à l'arrêt et il ne me semble pas gérer les pièces jointes.
Born to Kill EndUser !
[^] # Re: utiliser les APIs et les protocoles qui vont bien
Posté par Sacha Trémoureux (site web personnel) . Évalué à 2.
Je proposais imap-cli pour uniquement la partie move. Mais j’ai conscience que ça commencerait à faire un assemblage un peu complexe de programmes.
Si tu as les compétences pour le faire, sortir Python te permettrait d’unifier un peu tout ton projet et de diminuer un peu les dépendances. Surtout si tu as déjà un script pour la gestion des pièces jointes.
[^] # Re: utiliser les APIs et les protocoles qui vont bien
Posté par Philippe M (site web personnel) . Évalué à 3.
La gestion des pièces jointes est faite par un script shell qui va gratter dans le répertoire $USER/Mail. Il mérite encore quelques améliorations mais en l'état il fait le taff.
J'ai déjà fais quelques bricoles en python et j'ai vraiment du mal à me faire à ce langage. Mon idée était de rester sur des programmes systèmes (fetchmail, procmail…) scriptable pour rester simple et ne pas re-inventer la roue.
Born to Kill EndUser !
[^] # Re: utiliser les APIs et les protocoles qui vont bien
Posté par Sacha Trémoureux (site web personnel) . Évalué à 1.
Pas obligé d’utiliser Python, y’a d’autres langages !
J’ai peur qu’en voulant éviter de réinventer la roue, tu te retrouves avec un enrobage assez indigeste de technologies dans ton conteneur. Et mes recherches pour faire de l’IMAP en CLI sont pas super concluantes alors que 4-5 lignes de codes feraient assez rapidement le boulot.
[^] # Re: utiliser les APIs et les protocoles qui vont bien
Posté par NeoX . Évalué à 3. Dernière modification le 21 octobre 2021 à 15:46.
justement, plutot que de réinventer la roue, utilisons ce qui a déjà été testé et éprouvé
une petite recherche sur internet nous donne un exemple de code pour déplacer certains emails contenant un motif, dans un autre dossier
https://www.example-code.com/python/imap_move_messages.asp
et dans la meme veine, ici pour dump tous les emails du dossier IMAP vers un dossier local
https://gist.github.com/robulouski/7442321
mais finalement tout tourne autour de la lib IMAP_TOOLS dont voici la doc
https://pypi.org/project/imap-tools/
[^] # Re: utiliser les APIs et les protocoles qui vont bien
Posté par Philippe M (site web personnel) . Évalué à 2.
getmail m'a souvent, je te laisse voir plus bas le montage fait.
Born to Kill EndUser !
[^] # Re: utiliser les APIs et les protocoles qui vont bien
Posté par Philippe M (site web personnel) . Évalué à 2.
s/getmail m'a souvent/getmail m'a sauvé/
Born to Kill EndUser !
[^] # Re: utiliser les APIs et les protocoles qui vont bien
Posté par JJD . Évalué à 3.
De ce que je connais de fetchmail, je ne pense pas qu'il soit possible de lui dire de déplacer les mails récupérés dans un dossier IMAP spécifique.
En revanche, cela doit être possible avec getmail qui possède une option de configuration move_on_delete (la façon de configurer m'a un peu surpris : il faut demander la suppression des mails récupérés en indiquant que ces mails supprimés doivent être déplacés…) Évidemment, dans ce cas, le mail est déplacé au moment où on le récupère, pas après analyse et impression des pièces jointes. Pour cela, on n'échappera pas à l'utilisation d'un client IMAP (api ou cli) et ça va forcément se compliquer un peu (il faudra avoir un identifiant du mail pour savoir quoi déplacer).
[^] # Re: utiliser les APIs et les protocoles qui vont bien
Posté par Philippe M (site web personnel) . Évalué à 4. Dernière modification le 22 octobre 2021 à 11:19.
Nikel avec getmail
fichier de config
Dans mon container je lance toute les x minutes getmail par cette commande
getmail "copie" les mails dans le répertoire Mail/new, efface le mail de INBOX pour le copier dans INBOX.INBOX.archives
Ensuite le script suivant extrait les fichiers joints, lance l'impression et fait le ménage dans les répertoires.
Faut que j'intègre la suppression du fichier log tout les x jours et éventuellement une purge du dossier INBOX.INBOX.archives tout les x mois.
Au final j'utilise un seul programme getmail totalement intégré au système. Je vais voir pour publier tout ça sur docker hub et github.
Born to Kill EndUser !
[^] # Re: utiliser les APIs et les protocoles qui vont bien
Posté par Philippe M (site web personnel) . Évalué à 2.
Et voilà le petit dépôt qui va bien pour les warrior : https://github.com/Philippe-M/mail2print
Born to Kill EndUser !
[^] # Re: utiliser les APIs et les protocoles qui vont bien
Posté par NeoX . Évalué à 4. Dernière modification le 22 octobre 2021 à 11:34.
amelioration pour optimiser tout ca
1°) tu rentres dans le dossier ATTACH
mais tu listes ce meme dossier pour compter les occurences
un simple
ls
puisque tu es dedans serait suffisant2°) tes variables e,a,y,f ne sont pas parlantes
3°) tu boucles souvent pour relire chacun des fichiers (avant conversion, avant patch, apres patch pour impression
pourquoi ne pas prendre le fichier, le patcher, l'imprimer dans une seule boucle et passer au suivant
dans mon code il faut surement revoir la condition (if extension = pdf), j'ai un doute sur la syntaxe et pas le temps de verifier
[^] # Re: utiliser les APIs et les protocoles qui vont bien
Posté par Philippe M (site web personnel) . Évalué à 2.
Effectivement, c'est bien plus propre comme tu le propose.
Merci.
Born to Kill EndUser !
[^] # Re: utiliser les APIs et les protocoles qui vont bien
Posté par Philippe M (site web personnel) . Évalué à 2. Dernière modification le 22 octobre 2021 à 15:01.
Version corrigé, il y avait un problème avec le mv qui n'aimais pas trop les espaces dans le nom de fichier initial.
Born to Kill EndUser !
[^] # Re: utiliser les APIs et les protocoles qui vont bien
Posté par NeoX . Évalué à 2.
alors c'est dommage d'appeler 2fois basename
autant faire
puis utiliser la variable ${fichier} partout ou l'ancien nom doit etre utiliser
ah, aussi quand tu colles du code, le bouton de l'éditeur n'est pas complet, il faut preciser le langage pour que ca colore le code suivant le langage.
ainsi :
```sh
#!/bin/bash
#mon code shell
if action
then
reaction1
reaction2
fi
```
donne
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.