bonjour à tous, voila, mon but est de récupérer le code source d'une image d'un email envoyé en texte brut.
de décoder tout ca et de le mettre ds un fichier .gif, pour reproduire l'image originale.
je vous met ma fonction et je vais vous la détailler.
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 sub createImage(){ my $m = shift; # récupération du mail my $image = join '', @$m; my $name ; $name = time(); if($image =~ /filename=\"(.*)+\.(gif|jpg)\"/){ #expression qui me permet de récupérer l'extension de l'image $name = $name.'.'.$2; # creation d'un nom unique pour l'image if(!-e '/blog/images'){ mkdir ("c:/easyphp/www/blog/images",0755) || print ("Impossible de créer le répertoire \n"); } open(IMAGE,">blog/images/$name"); if($image =~ m/filename=\"(.*)+\.(.*)\"\n\n(.*)\n\n------=/s){ #ici je récupére le code source de l'image my @decoded = MIME::Base64::decode($3); #je décode la source foreach my $lines (@decoded){ print IMAGE $lines; #et je copie dans le fichier de type gif l'image } close IMAGE; } } return $name; }
donc la copie dans le fichier le decodage s'effectue corretement, seulement a la fin j'ai une image déformée. (l'image ne peut être affichée car elle contient des erreures).
cela dit la taille de l'aimge est correctement récupérée, j'en conclu que je suis sur la bonne voie, mais je me demande si le format du code source de l'image est encore respecter après l'expressino régulièere qui a pour but de récupérer ce code source. car en regardant dans le code source du mail dans outlook, je vois qu'il y a des espace au bout de chaque ligne, je me demande si c'est respecté avec l'expression.
merci de me dire si vous avez des conseils pour eviter tout probleme lors du décodage, c'est urgent et ca fait un petit moment que je suis déjà dessus.
P.S : le plus etrange c'est qd j'ouvre les 2 image ds un bloc note, je remarque que c le meme contenu, mais dans celui que je créer il y a des sauts de ligne en trop ce qui fausse tout.
merci beaucoup
Partager