Script du jour, télécharger les pièces jointes d’une boite mail

Posted by

Voila un petit script que j’ai codé pour dépanner quelqu’un qui s’est dit après deux ans que finalement il aurait dû enregistrer ses photos reçues par mail. Comme je le trouve assez intéressant pour le publier, le voici :

#!/usr/bin/env perl

use strict;

use Net::IMAP::Simple;
use MIME::Parser;

my $server = "serveur";
my $user = "user";
my $pass = "pass";

my $imap = new Net::IMAP::Simple( $server );
$imap->login($user, $pass);

my $nbmsg = $imap->select( 'INBOX' );

foreach my $msg ( 1..$nbmsg ) {
    my $lines = $imap->get( $msg );
    my $fh = $imap->getfh( $msg );
    my $parser = new MIME::Parser;
    $parser->output_under("/tmp");
    my $entity = $parser->parse($fh);
    close $fh;
}
$imap->quit();

Il reste plus qu’un petit find /tmp -name *.jpg -exec mv {} ; bien placé pour récupérer les fichier JPEG par exemple.

6 comments

  1. Hello,

    Je ne suis pas convaincu par l’ingéniérie sociale 🙂 de ton script; s’il doit déplacer lui-même ses fichiers jpg, on peut être assuré qu’il les oubliera.

    Par contre, ça montre comme on peut réaliser facilement des choses complexes avec les librairies appropriées.

    Par exemple, je suis abonné à certaines mailing-listes juste parce que c’est nécessaire pour pouvoir y poster; par contre, je préfère lire les réponses sur les sites correspondants. Donc je verrais bien un script similaire pour effacer les messages au lieu de les rapatrier.

    1. En fait c’est sur mon poste que le script et le find seront exécutés donc le problème ne se pose pas mais effectivement si j’avais voulu le livrer je l’aurais davantage peaufiné.

    1. Pour le SSL il faudrait utiliser Mail::IMAPClient. J’avais commencé un bout de script, dès qu’il sera prêt je le posterai.

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.