Bonjour,
on me demande d'apporter quelques modifications à un code mais j'ai un soucis pour savoir de quel format de mail il s'agit dans l'analyse de ce code.
Si vous pouviez m'indiquer cela, ça m'aiderait beaucoup.
Voici quelques bouts de code :
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 #--8<--------------------------------------------------------------------------# # # RECUPERATION DU FICHIER MIME # #-------------------------------------------------------------------------->8--# my $path_to_delete = ""; my $temp_path = "$PATH_VAR_TMP/mms_parser-" . int(rand(999999999)); system("/bin/rm -rf $temp_path"); mkdir($temp_path) or log_msg('alert', "Couldn't create $temp_path") and exit(75); $path_to_delete = $temp_path; my $parser = MIME::Parser->new; $parser->output_under($temp_path); $parser->ignore_errors(1); # Réception de l'entrée standard my $is_quoted_printable = 0; my $concat = 0; my $fh; my $str; { while (<STDIN>) { if ($concat) { $str .= $_; } else { $str = $_; } if ($is_quoted_printable) { if ($str =~ /\x3d\x0d\x0a/) { $str =~ s/\x3d\x0d\x0a//; $concat = 1; } else { $concat = 0; } } if ($str =~ /Content-Transfer-Encoding/) { if ($str =~ /quoted-printable/) { $is_quoted_printable = 1; } else { $is_quoted_printable = 0; } } if ($is_quoted_printable) { $str =~ s/\=($PROHIBITED_ENCODING)//g; $str =~ s/&#\d{5};//g; } if (!$concat) { $fh .= $str; $str = ""; } } $fh .= $str if (length($str)); }
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 #--8<--------------------------------------------------------------------------# # # PARSING DU FICHIER MIME # #-------------------------------------------------------------------------->8--# my $entity = eval { $parser->parse_data($fh) }; $error = ($@ || $parser->last_error); # Traitement d'erreur BASIQUE. Il faut examiner les types d'erreurs # lors des tests, et vérifier si l'on ne peut pas passer outre. if (length($error)) { my $path = "$PATH_VAR_MMS/trash/" . time() . '-err-' . sprintf("%.f", rand(1000000)) . "$EMAIL_EXT"; if (open(ERR, ">$path")) { print(ERR $fh); log_msg('err', "MIME parsing failed. File saved to $path.\n$error"); exit(0) ; } log_msg('err', "$@ $!"); exit(0); # syslogging wanted here ... } $error = 0;Merci
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 # ---- # parse_header : # Paramètres : Un en-tête MIME. # ---- sub parse_header { my $header = shift; # Cette regexp est tres dependante du format de MessageID (infra amont) # effectuer un eval de # $split_id = "(split(/\./, $header->get('message-id')))[0,1]" ? my ($ext_id, $id) = (split(/\./, $header->get('message-id')))[0,1]; unless (defined($id) || defined($ext_id)) { log_msg('err', "ID or EXT-ID invalid. Exiting."); dump_bad_mail($fh, time() . "-ID"); exit(0); } $ext_id = $1 if ($ext_id =~ /\D*(\d+)\D*/); $id = $1 if ($id =~ /\D*(\d+)\D*/); # get MSISDN my $from = $header->get('from'); unless(defined($from)) { log_msg('err', "No 'From' field available ! Exiting."); dump_bad_mail($fh, time() . "-$id"); exit(0); } [...] }
Partager