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

golgothe Messages postés 2 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 24 novembre 2009 - 27 nov. 2008 à 16:03
yopai_v Messages postés 47 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 21 avril 2010 - 30 nov. 2008 à 12:31
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);    

2 réponses

JulSoft Messages postés 354 Date d'inscription dimanche 3 juin 2001 Statut Membre Dernière intervention 11 mars 2013
28 nov. 2008 à 15:37
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 ;-)
0
yopai_v Messages postés 47 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 21 avril 2010
30 nov. 2008 à 12:31
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
0
Rejoignez-nous