Documentation sur le logiciel SYMPA

modif_date_mbox.pl

#!/usr/bin/perl -w
#
# modif_date_mbox.pl
#
# Catherine.Balleydier@grenoble-inp.fr
#
# maj : 29/04/2022
#
########################################################################
# 
#   modification de la date d'un fichier mbox pour archiver dans sympa
#
########################################################################
#
use strict;
use warnings;
use File::Copy;
 
my $entree = $ARGV [0];
 
my $REP="/home/sympa/list_data/listestest.grenoble-inp.fr/drive.pi/archives/" ;
my $fichier ;
my $nvfichier ;
my @MAIL ;
my @MAIL2 ;
my @NV ;
my @MESS ;
my $mot = "From -"  ;
my $fichmail ;
my $fichmail2 ;
my $ind;
my $message ;
my $date;
my $mot2;
my $tamp ;
my @FROMD ;
 
 
#
# traiter le fichier mbx
#
  $fichier = "$REP"."$entree" ; 
  open (FICH,"$fichier") ||die "probleme fichier";
  @MAIL = <FICH> ;
  close (FICH); 
 
#
# nouveau fichier
#
$nvfichier = "$fichier".".mbox" ;
open (NV,">$nvfichier") ||die "probleme fichier";
 
# nettoyer fichier entree
for  $ind (0..$#MAIL) 
{
     chomp ($MAIL[$ind]) ;   
}
 
# faire une seule ligne
  $fichmail =  join ('abcdef', @MAIL);
  chomp ($fichmail) ;
 
#  print "$fichmail \n \n" ;  
 
# remplacer From - Tue Mar 15 par XAVAR
$mot2 = "XAVAR"."$mot";
 
$fichmail =~ s/$mot/$mot2/g ;
 
 
 
# séparer les messages
 
@MAIL2 =  split (/XAVAR/, $fichmail) ;
 
# traiter chaque message
 
my $i;
 
for $i (1..$#MAIL2) 
{
   @MESS = split ("abcdef", $MAIL2[$i] ) ;
   $date = "";   
 
   # récupérer la date du type Sat, 30 Jan 2010 15:13:28 +0100
   # pour avoir Sat Jan 30 15:13:28 2010
   for $ind (0..$#MESS) 
   {
      if ( $MESS[$ind] =~ /^Date: / ) 
      {   
         $tamp = $MESS[$ind] ;
         $tamp =~ s/Date: //;
         $tamp =~ s/,//;
         @FROMD = split (" ", $tamp ) ;
    if ( $FROMD[0] !~ /Mon|Tue|Wed|Thu|Fri|Sat|Sun/ )
    { 
       print "$MESS[$ind] \n ";
    }
 
        $date = "$FROMD[0]"." "."$FROMD[2]"." "."$FROMD[1]"." "."$FROMD[4]"." "."$FROMD[3]" ;
        last ;
      }
 
   }
   print NV "From - "."$date"."\n";
 
   for $ind (0..$#MESS) 
   {
 
       if ( $MESS[$ind] !~ /From -/ ) 
       {
          $MESS[$ind] =~ s/\r// ; 
          print NV "$MESS[$ind]"."\n" ;
       }
   }
}
 
close (NV);