un script qui dépose le "body" des emails non lus dans un fichier texte
Pour réaliser une passerelle entre des progiciels, je cherchais un moyen de relever une boite imap ou pop, et de placer le contenu des nouveaux e-mails dans des fichiers textes. Et uniquement le contenu (pas les entêtes toussa).
J'ai regardé du coté de mutt en ligne de commande, mais j'ai fini par trouver qu'en php (avec la lib php5-imap), c'était plus simple, et après tout php est un langage de script efficace qui peut etre utilisé pour autre chose que des pages web.
Voici mon script:
<?php /* *Par gnieark http://blog-du-grouik.tinad.fr/ mars 2013 *relève une boite aux lettres *et place le body des nouveaux messages dans un fichier texte. */ //parametres $imap_hote="mail.domaine.fr"; $imap_port="143"; $imap_identifiant="votreIdentifiantMail"; $imap_password="password"; $dossierDestination="/dossier/de/destination/"; //ouvrir la boite mail ADAPTEZ en fonction de vos parametres de connexion, //voir http://php.net/manual/fr/function.imap-open.php pour la liste des parametres possibles if($imapConn === FALSE){ echo "probleme de connexion"; die; } //besoin d'avoir le nombre de messages total de la boite mails pour la suite if (FALSE !== $info) { //télécharger les entetes des mails //boucle pour tous les e-mails foreach($mails as $lemail){ $mailId=$lemail->uid; //seul les non-lus m'interessent if($lemail->seen == '0'){ //envoyer leur contenu dans un fichier texte //note: l'e-mail est considéré lu apres son passage dans la function imap_fetch_body } } }else{ echo "impossible de lire le contenu de la boite email"; } ?>
et une tache planifiée (cron) pour que ce soit fait toutes les 5 minutes
su userUnixQuiReleveLeCourrier crontab -e
On y met:
*/5 * * * * /usr/bin/php5 /chemin/de/votre/script/php.php >/dev/null 2>&1