Récupération de pièce jointe dans un formulaire html

Signaler
Messages postés
2
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
24 novembre 2009
-
Messages postés
47
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
21 avril 2010
-
Bonjour, je souhaiterais envoyer un mail avec une pièce jointe via un formulaire html. Le but est de récupérer un cv et une lettre de motivation. J'ai bien les deux pieces jointes mais elles sont vides.

voici le code du formulaire :
<FORM name="form" id="monForm" method="GET" action="envoi_candidature.php" enctype="multipart/form-data" onSubmit="return check();" >
                                                            ----

                                    Nom * :,
                                    E-Mail * :,
                               
                                ----

                                    ,
                                    ,
                               
                                ----

                                    Prénom * :,
                                    Téléphone * :,
                               
                                ----

                                    ,
                                     ,
                               
                                ----

                                    Adresse * :,
                                    Poste sollicité * :,
                               
                                ----

                                     ,
                                      ,
                               
                                ----

                                    Code postal * :,
                                    Lettre de motivation * :,
                               
                                ----

                                                                              ,
                                     ,
                               
                                ----

                                    Ville * :,
                                    CV :  *,
                               
                                ----

                                        ,
                                      ,
                               
                           

                    <fieldset>
                        <legend>Vérification anti-spam</legend>
                             Veuillez s'il vous plait répondre à cette question : *
                           
Combien font 2 + 6 ?

               
                   
                 

                    </fieldset>
                       
                            Les champs marqués d'un * sont obligatoires

                       

                               
                               
                </form>  

Voici le code qui effectue le traitement :

<?php

            $nom = $_GET["nom"];
            $prenom = $_GET["prenom"];
            $adresse = $_GET["adresse"];
            $cp = $_GET["cp"];
            $ville = $_GET["ville"];
            $mail = $_GET["mail"];
            $telephone = $_GET["telephone"];
            $poste_sollicite = $_GET["poste_sollicite"];
            $lettre_motiv = $_GET["lettre_motiv"];
            $cv = $_GET["cv"];
        
             echo $lettre_motiv;
            
            //----------------------------------
            // Construction de l'entête
            //----------------------------------
            $boundary = "-----=".md5(uniqid(rand()));
            
            $header  = "MIME-Version: 1.0\r\n";
            $header .= "Content-Type: multipart/mixed; boundary="$boundary"\r\n";
            $header .= "\r\n";
            
            //--------------------------------------------------
            // Construction du message proprement dit
            //--------------------------------------------------
            
            $msg = "Je vous informe que ceci est un message au format MIME 1.0 multipart/mixed.\r\n";
            
            //---------------------------------
            // 1ère partie du message
            // Le texte
            //---------------------------------
            $msg .= "--$boundary\r\n";
            $msg .= "Content-Type: text/plain; charset="iso-8859-1"\r\n";
            $msg .= "Content-Transfer-Encoding:8bit\r\n";
            $msg .= "\r\n";
            $msg .= "Ceci est un mail avec 2 fichiers joints\r\n";
            $msg .= "\r\n";
            
            //---------------------------------
            // 2nde partie du message
            // Le 1er fichier (inline)
            //---------------------------------
            $file = $lettre_motiv;
            $fp   = fopen($file, "rb");   // le b c'est pour les windowsiens
            $attachment = fread($fp, filesize($file));
            fclose($fp);
            $attachment = chunk_split(base64_encode($attachment));
            
            $msg .= "--$boundary\r\n";
            $msg .= "Content-Type: multipart/mixed; name="$file"\r\n";
            $msg .= "Content-Transfer-Encoding: base64\r\n";
            $msg .= "Content-Disposition: attachment; filename="$file"\r\n";
            $msg .= "\r\n";
            $msg .= $attachment . "\r\n";
            $msg .= "\r\n\r\n";
            
            //---------------------------------
            // 3ème partie du message
            // Le 2ème fichier (attachment)
            //---------------------------------
            $file = $lettre_motiv;
            $fp = fopen($file, "rb");
            $attachment = fread($fp, filesize($file));
            fclose($fp);
            $attachment = chunk_split(base64_encode($attachment));
            
            $msg .= "--$boundary\r\n";
            $msg .= "Content-Type: image/gif; name="$file"\r\n";
            $msg .= "Content-Transfer-Encoding: base64\r\n";
            $msg .= "Content-Disposition: attachment; filename="$file"\r\n";
            $msg .= "\r\n";
            $msg .= $attachment . "\r\n";
            $msg .= "\r\n\r\n";
            
            $msg .= "--$boundary--\r\n";
            
            $destinataire = "monAdresse@hotmail.com";
            $expediteur   = "monAdresse@hotmail.com";
            $reponse      = $expediteur;
            echo "Ce script envoie un mail avec 2 fichiers joints à $destinataire";
            mail($destinataire,
                 "Email avec 2 fichiers joints (dont 1 inline)",
                 $msg,
                 "Reply-to: $reponse\r\nFrom: $destinataire\r\n".$header);    
A voir également:

2 réponses

Messages postés
354
Date d'inscription
dimanche 3 juin 2001
Statut
Membre
Dernière intervention
11 mars 2013

Je suis pas certain de ce que je vais avancer, mais il me semble que l'envoi de fichiers doit se faire à travers la méthode POST, et pas en GET, c'est peut être là ton problème... peut être pas ;-)
Messages postés
47
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
21 avril 2010

Oui. Voir la section qui est dédiée aux téléchargements de fichier sur (par exemple) http://fr.php.net/manual/fr/features.file-upload.php