• [^] # Re: utiliser les APIs et les protocoles qui vont bien

    Posté par (site web personnel) . En réponse au message Imprimer une pièce jointe automatiquement en cli. Évalué à 4. Dernière modification le 22 octobre 2021 à 11:19.

    Nikel avec getmail

    fichier de config

    [retriever]
     type = SimpleIMAPRetriever 
     server = server
     username = username
     password = password
     mailboxes = ("INBOX",)
     move_on_delete = INBOX.INBOX.archives 
    [destination]
     type = Maildir
     path = /home/mail2print/Mail/
    [options]
     delete = true
     delete_after = 0
     read_all = false
     keep = true

    Dans mon container je lance toute les x minutes getmail par cette commande

     #!/bin/sh
     TIMECRON1=${TIMECRON:-300}
     while :
     do
     getmail --getmaildir=/etc/mail2print --rcfile=getmail.conf
     sh /bin/printmail.sh
     sleep $TIMECRON1
     done

    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.

     #!/bin/bash
     # Parameters
     MAILDIR=/home/mail2print/Mail
     LOGFILE=/var/log/mail/mail2print.log
     ATTACH_DIR=/home/mail2print/Mail/attachments
     PRINTER=${PRINTER}
     if [ -d ${MAILDIR}/new ]
     then
     COUNT=`ls ${MAILDIR}/new | wc -l`
     if [ ${COUNT} -ne 0 ]
     then
     for i in ${MAILDIR}/new/*
     do
     #echo "[printmail] Processing : $i" | tee -a ${LOGFILE}
     uudeview $i -iqn -p ${ATTACH_DIR}/
     # process file attachments with space
     cd ${ATTACH_DIR}
     NBATTACH=`ls ${ATTACH_DIR} | wc -l`
     if [ ${NBATTACH} -ne 0 ]
     then
     for e in ./*
     do
     a=`echo $e | tr "[:blank:]" "_"`
     if [ $? -eq 0 ]
     then
     mv "$e" "$a"
     fi
     done
     for f in *.PDF
     do
     mv $f ${f%.*}.pdf
     done
     # end of patch
     #echo "[printmail] Printing PDFs" | tee -a ${LOGFILE}
     for x in ${ATTACH_DIR}/*.pdf
     do
     #echo "[printmail] Printing : $x" | tee -a ${LOGFILE}
     rlpr --printer=${PRINTER} $x
     #echo "[printmail] Deleting file : $x" | tee -a ${LOGFILE}
     rm -f $x | tee -a ${LOGFILE}
     done
     #echo "[printmail] Clean up and remove any other attachments" | tee -a ${LOGFILE}
     for y in ${ATTACH_DIR}/*
     do
     rm -f $y
     done
     fi
     # # delete mail
     #echo "[printmail] Deleting mail : $i" | tee -a ${LOGFILE}
     rm $i | tee -a ${LOGFILE}
     done
     fi
     fi

    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 !