Bonjour à tous, et meilleurs voeux à vous et vos familles.

Voilà,

J'ai mis en place ce script, c'est un formulaire de contact avec pièce jointe.

voici la page "formulaire.php" :

Code html : 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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
 
 
<body>
<form action="mail.php" method="post" enctype="multipart/mixed">
	<label for="nom">Votre nom</label>
	<input type="text" name="nom" required/>
	<label for="email">Votre E-mail</label>
	<input type="email" name="email" required/>
	<label for="message">Votre demande</label>
	<textarea name="message" rows="2" cols="50" required></textarea>
	<label for='fichier'>Ajouter une pièce jointe <span>(jpeg ou pdf, max 2Mo)</span></label>
        <input type="file" name="fichier" id="fichier">
	<input type="submit" value="Envoyer">
</form>
</body>
</html>


voici la page de traitement "mail.php" :


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
<?php
 
 
error_reporting(E_ALL); ini_set("display_errors", 1); //Erreurs d’affichage
 
 
    if (get_magic_quotes_gpc()){  
        $nom = stripslashes(htmlentities($_POST['nom']));
        $email_from = stripslashes(htmlentities($_POST['email']));
        $message = stripslashes(htmlentities($_POST['message']));
    }else{  
	//Évitez les injections en cas de courrier HTML
        $nom = htmlentities($_POST['nom']);
        $email_from = htmlentities($_POST['email']); 
        $message = htmlentities($_POST['message']);
    }
 
 
	//Vérifiez si l’hôte de messagerie autorise \r
    if(preg_match("#@(hotmail|live|msn).[a-z]{2,4}$#", $email_from))
    {
        $passage_ligne = "\n";
    }
    else
    {
        $passage_ligne = "\r\n";
    }
 
 
    $email_to = "toto@sfr.fr"; //Mail du destinataire à changer
    $email_subject = "Demande prestation de Naissance"; //Sujet du mail
    $boundary = md5(rand()); // Clé de limite aléatoire
 
 
    function clean_string($string) {
        $bad = array("content-type","bcc:","to:","cc:","href");
        return str_replace($bad,"",$string);
    } 
 
    $headers = "From: \"".$nom."\"<".$email_from.">" . $passage_ligne; //Expéditeur
    $headers.= "Reply-to: \"".$nom."\" <".$email_from.">" . $passage_ligne; //Expéditeur
    $headers.= "MIME-Version: 1.0" . $passage_ligne; //MIME Version
    $headers.= 'Content-Type: multipart/mixed; boundary='.$boundary .' '. $passage_ligne; //Contenu (2 versions ex:text/plain et text/html)
 
 
    $email_message = '--' . $boundary . $passage_ligne; //Ouverture de la limite
    $email_message .= "Content-Type: text/plain; charset=\"utf-8\"" . $passage_ligne; //Type de contenu
    $email_message .= "Content-Transfer-Encoding: 8bit" . $passage_ligne; //Codage
    $email_message .= $passage_ligne .clean_string($message). $passage_ligne; //Contenu
 
	//Attachment
    if(isset($_FILES["fichier"]) &&  $_FILES['fichier']['name'] != ""){ //Vérifier si le fichier existe
        $nom_fichier = $_FILES['fichier']['name'];
        $source = $_FILES['fichier']['tmp_name'];
        $type_fichier = $_FILES['fichier']['type'];
        $taille_fichier = $_FILES['fichier']['size'];
 
        if($nom_fichier != ".htaccess"){ //Vérifiez si ce n’est pas un fichier .htaccess
			 if($type_fichier == "image/jpeg" 
                || $type_fichier == "image/pjpeg" 
                || $type_fichier == "application/pdf"){ //Jpeg ou PDF
 
                if ($taille_fichier <= 2097152) { //Taille supérieure à 2 Mo
                    $tabRemplacement = array("é"=>"e", "è"=>"e", "à"=>"a"); //Modification des caractères spéciaux
 
                    $handle = fopen($source, 'r'); //Ouverture de fichier
                    $content = fread($handle, $taille_fichier); //Lecture de fichiers
                    $encoded_content = chunk_split(base64_encode($content)); //Codage
                    $f = fclose($handle); //Fermeture de fichier
 
                    $email_message .= $passage_ligne . "--" . $boundary . $passage_ligne; //Deuxième ouverture de la frontière
                    $email_message .= 'Content-type:'.$type_fichier.';name="'.$nom_fichier.'"'."\n"; //Type de contenu (application/pdf ou image/jpeg)
                    $email_message .='Content-Disposition: attachment; filename="'.$nom_fichier.'"'."\n"; //Informer qu’il y a une pièce jointe
                    $email_message .= 'Content-transfer-encoding:base64'."\n"; //Codage
                    $email_message .= "\n"; //Ligne vide. IMPORTANT!
                    $email_message .= $encoded_content."\n"; //Attachment
 
 
                }else{
					//Message d’erreur pour la pièce jointe supérieure à 2 Mo
                    $email_message .= $passage_ligne ."L'utilisateur a tenté de vous envoyer une pièce jointe mais celle ci était superieure à 2Mo.". $passage_ligne;
                }
            }else{
				//Message d’erreur pour un type de contenu incorrect pour la pièce jointe
                $email_message .= $passage_ligne ."L'utilisateur a tenté de vous envoyer une pièce jointe mais elle n'était pas au bon format.". $passage_ligne;
            }
        }else{
			//Message d’erreur pour l’envoi d’un fichier .htaccess
            $email_message .= $passage_ligne ."L'utilisateur a tenté de vous envoyer une pièce jointe .htaccess.". $passage_ligne;
        }
    }
 
    $email_message .= $passage_ligne . "--" . $boundary . "--" . $passage_ligne; //Fermer boundary
 
    if(mail($email_to,$email_subject, $email_message, $headers)==true){  //Envoi de courrier
        header('Location: index.html#contact'); //Redirection
    }
 
 
?>
Ce script fonctionne à moitié, je reçois bien le mail mais aucunement la pièce jointe

Pourriez vous m'aider

Grand merci à vous