IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

MIME::Lite Probléme : Wide character in syswrite


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut MIME::Lite Probléme : Wide character in syswrite
    Bonjour ,

    Je suis bloqué dans mon envoie d'email certains partents d'autres non car j'ai une erreur "Wide Character in syswrite" ... et j'ai eu ce meme probléme avec un autre module Email::MIME et je n'aie pas trouvé de résolution à ce probléme depuis hier sachant que je finis mon stage aujourd'hui j'aimerai trouver une solution . Pouvez m'aidez?

    Merci

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Bonjour,

    Ce sont toujours les même adresses mails qui posent soucis ?
    On peut voir le code ?

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut
    Non d'aprés les test que j'ai effectué c'est les piéces jointes en .txt qui font buguer... car je les ouvres pour les mettre dans le corps de mon email . Pour certains cela fonctionne parfaitement d'autres non .

    J'ai fais des test sur un qui ne fonctionnait pas et j'ai modifié le contenu du fichier .txt cela n'a rien changé , changé le nom idem et derniére manip j'ai supprimé le txt recréé un nouveau miracle sa fonctionnne l'email par sans probléme ... je ne comprends vraiment pas ce probléme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
     
    ###########
    #FUNCTIONS#
    ###########
     
    sub envoiMail{
     
    	my ($destinataire, @attachments) = @_;
     
    	my $body_mail;
            my @recupNomDoc = split(/!/, $attachments[0]);
    	my $docAttach = $recupNomDoc[3];
    	my @splitNomDoc = split(/\//,$docAttach);
    	my $nomDoc = $splitNomDoc[0];
     
     
    	my $msg = MIME::Lite->build(
    			From     => ********************',
    			To       => $destinataire,
    			Subject  => $nomDoc,
    			Type     => 'TEXT',
    			Encoding => 'quoted-printable',
    			Data     => ""
    		);
     
     
     
    	foreach my $attachment (@attachments){
     
    		my @splitTest = split(/\//,$attachment);
    		my $split1 = $splitTest[0];
    		my $split2 = $splitTest[1];
     
    		print "$split1\n";
    		print "$split2\n";
    		my $file = $attachment;
     
     
    		my $extension = (split /\./, $file)[-1];
     
    		if($extension eq "txt"){
     
    			$body_mail = openFile($attachment);
     
    			### Add parts (each "attach" has same arguments as "new"):
    			$msg->attach(Type     =>'TEXT',
    						 Data     =>$body_mail,
     
    						 );  
    		}else{
     
    			$msg->attach(Type     =>'application/'.$extension,
    					 Path     => $attachment,
    					 Filename => $split2,
    					 Disposition => 'attachment'
    					 );
     
     
     
     
    		}
     
     
    	}
     
    	$msg->attr("content-type.charset" => "utf-8");
    	$msg->send('smtp', '*************');
    }
     
     
     
     
     
    #PARCOURS REPERTOIRE / Sous-Repertoire Recuperation liste de fichiers 
     
    sub GetFilesList
    {		
    		#recupere le premier parametre 
            my $Path = $_[0];
            my $FileFound;
            my @FilesList=(); #tableau
     
            # Lecture de la liste des fichiers
            my @Contenu = GetDirectoriesList($Path);
     
     
            foreach my $FileFound (@Contenu) {
     
    				# Traitement des fichiers , si fichier alors je stocke directement dans ma liste de fichier
                    if ( -f "$Path/$FileFound") {
                            push ( @FilesList, "$Path/$FileFound" );
                    }
     
    				# Traitement des repertoires
                    elsif ( -d "$Path/$FileFound") {
                            # Boucle pour lancer la recherche en mode recursif , si repertoire je rappel la méthode pour 
    						# ouvrir ce repertoire
                            push (@FilesList, GetFilesList("$Path/$FileFound") );
                    }
     
     
            }
            return @FilesList;
    }
     
     
     
    sub GetDirectoriesList{
     
    my $Path = $_[0];
    opendir (DIR, $Path)
                    or die "Impossible d'ouvrir le repertoire $Path\n";
    		#recupere liste repertoires / fichiers (nom repertoire ou nom fichier)
            my @directoriesList = grep { !/^\.\.?$/ } readdir(DIR);
            closedir (DIR);
     
    		return @directoriesList;
    }
     
     
     
     
    sub openFile{
     
    my $Path =  $_[0];
    my $body = "";
     
    	open(my $fh, '<:encoding(UTF-8)', $Path)
    								or die "Could not open file '$Path' $!";
     
    	while (my $row = <$fh>) {
     
    	  chomp $row; #supprime le dernier \n de $row
    	  $body = $body.$row."\n";
     
    	}
     
    return $body;
    }
     
     
     
     
     
    ######################
    #Programme principale#
    ######################
     
     
    ### SAISIE ###
    print "Indiquer l'adresse repertoire de la base a traiter :";
    chomp(my $saisie = <STDIN>);
    my @Directories = GetDirectoriesList($saisie);
    my @splitClient = split(/\\/,$saisie);
    my $client = $splitClient[2];
     
     
     
     
    	foreach my $directory  (@Directories) {
     
    		my $i = 0 ;
    		my @splitNiveau = split(/!/,$directory);
    		my $firstChiffre = $splitNiveau[0];
    		my $lettre = $splitNiveau[1];
    		my $secondChiffre = $splitNiveau[2]; 
    		my $email = $client."-".$firstChiffre.$lettre.$secondChiffre."@"."ao-docs.appspotmail.com";
     
     
     
    		#recuperation des piéces jointes de ce document
    		my $pathDirectory = $saisie."\\".$directory;
    		#print "$pathDirectory\n";
     
    		print "$directory\n";
    		my @Files = GetFilesList ($pathDirectory);
     
    		print "Envoi du document a l'adresse : $email \n \n";
    		envoiMail(lc $email,@Files);
     
     
    	}
     
    print "					PROCESSUS D'ENVOI TERMINE\n"

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut
    Je viens refaire un test sans les ouvrir en passant les txt en piéces jointes sans les ouvrir tout fonctionnement parfaitement , sa sent le probléme d'encodage ça encore.


    Edit: en ISO-8859-1 cela passe mais j'ai des lettres qui ne sont pas bien représentés quel encodage je peux utiliser sauf UTF-8 car cela bloque avec cet encodage ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     
     
    sub openFile{
     
    my $Path =  $_[0];
    my $body = "";
     
    	open(my $fh, '<:encoding(iso-8859-1)', $Path)
    								or die "Could not open file '$Path' $!";
     
    	while (my $row = <$fh>) {
     
    	  chomp $row; #supprime le dernier \n de $row
    	  $body = $body.$row."\n";
     
    	}
     
    return $body;
    }

  5. #5
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Oui, c'est un problème d'encodage. Tes pièces jointes sont écrites dans quel encodage? As-tu vraiment besoin de lire leur contenu dans le corps du mail, ou peux-tu les UUencoder?

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut
    J'ai besoin de récupérer le contenu du fichier txt car je fais un transfert de document de Lotus Notes vers une Plateforme online "AODOCS" et la description doit etre le contenu du fichier txt mais cela vient de la plateforme car en m'envoyant l'email par moi meme via Gmail , tous les piéces jointes et le contenu du fichier texte arrive comme je le souhaite

Discussions similaires

  1. Problème lors de l'envoi des mails via MIME::Lite
    Par mannouuu dans le forum Langage
    Réponses: 0
    Dernier message: 06/04/2014, 20h53
  2. Réponses: 2
    Dernier message: 12/06/2009, 10h40
  3. Problème de Wide character et de print :(
    Par vodevil dans le forum Langage
    Réponses: 2
    Dernier message: 11/03/2006, 18h02
  4. [debutant] C++ et les "wide characters"
    Par Biosox dans le forum Débuter
    Réponses: 7
    Dernier message: 25/10/2005, 10h13
  5. [MIME::Lite] Mail bloqué
    Par rafawel dans le forum Modules
    Réponses: 5
    Dernier message: 28/06/2005, 10h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo