Forum général.cherche-logiciel Récuperer des emails de Evolution

Posté par  .
Étiquettes : aucune
0
6
nov.
2005
Bonjour à tous,

j'utilise Evolution pour lire mes emails stockés sur un serveur IMAP. J'ai activé la copie des emails en local.

Par une fausse manip (j'ai voulu jouer avec offlineImap), j'ai supprimé tous mes emails du serveur.

La seule sauvegarde que j'ai est la copie en local des emails. Comment puis-je re-importer tous ces emails ?

En cherchant sur Internet, j'ai vu sur une mailling-list que la solution se trouve ici :
http://codeblogs.ximian.com/blogs/evolution/archives/000146.(...)

Pas de chance, le serveur est injoignable.

Merci de votre aide.
  • # Vive les archives

    Posté par  . Évalué à 1.

    Grâce au site www.archive.org j'ai pus accéder au script perl qui résout ce problème. Ça marche plutôt bien, j'ai pas perdu grand chose. Je colle le script entier ici au cas où...
    #!/usr/bin/perl
    
    # convert an evolution imap cache into a folder
    
    # Note: This version loses any status info stored in the .ev-summary file.
    
    $dir = $ARGV[0];
    $out = $ARGV[1];
    
    if ($dir eq "" || $out eq "") {
        print "Usage $0 inputdir outmboxfile\n";
        exit;
    }
    
    print "Processing dir $dir into mbox $out\n";
    
    open OUT,">>$out";
    
    foreach $file (`ls $dir | sort -n`) {
        chop $file;
        push @files, $file;
        $files{$file} = $file;
    }
    
    foreach $file (@files) {
        if ($file eq "." || $file eq "..") {
    	next;
        }
    
        print " $file\n";
    
        if ($file =~ m/^\d+\.$/) {
    	open IN,"<$dir/$file";
    	@body = ;
    	close IN;
    
    	print OUT "From -\n";
    	print OUT @body;
    	print OUT "\n";
        } elsif ($file =~ m/^(\d*)\.HEAD/) {
    	$base = $1;
    	&add_body($base);
        } else {
    	print "skipping\n";
        }
    }
    
    sub add_body {
        my $base = $_[0];
        my $boundary;
        my @head, $head;
        my $n;
        my $name;
        my @pending, $pending;
    
        print "Adding body $base\n";
    
        if ($files{$base.".MIME"}) {
    	open IN,"<$base.MIME";
    	@head = ;
    	close IN;
    	print OUT @head;
        }
    
        if ($files{$base.".HEADER"}) {
    	$name = "$dir/$base.HEADER";
        } elsif ($files{$base}) {
    	open IN, "<$base";
    	@head = ;
    	close IN;
    	print OUT @head;
    	print OUT "\n";
    	return;
        } else {
    	print OUT "\nBody of message not found\n";
    	return;
        }
    
        open IN,"<$name";
        @head = ;
        close IN;
        $head = join("",@head);
    
        if ($head =~ m/boundary\s*=\s*\"([^\"]*)\"/is) {
    	$boundary = $1;
        } elsif ($head =~ m/boundary\s*=\s*([\S]*)/si) {
    	$boundary = $1;
        } else {
    	$boundary = "";
        }
    
        print "outputting head data $name\n";
    
        print OUT $head;
    
    # this is so we 'properly' insert missing parts.
    
        @pending = ();
        $n = 1;
        while ($n < 50) {
    	$name = $base.".".$n.".MIME";
    
    	if ($files{"$base.$n.MIME"} || $files{"$base.$n.HEADER"} || $files{"$base.$n"}) {
    	    push @pending, "$base.$n";
    	    foreach $pending (@pending) {
    		if ($boundary ne "") {
    		    print OUT "--$boundary\n";
    		}
    		add_body($pending);
    	    }
    
    	    @pending = ();
    	}
    
    	$n++;
        }
    
        if ($boundary ne "") {
    	print OUT "--$boundary--\n\n";
        }
    }

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.