Problème pour joindre plusieurs fichiers à un mail

Problème pour joindre plusieurs fichiers à un mail - HTML/CSS - Programmation

Marsh Posté le 03-08-2010 à 19:41:02    

Bonjour à tous,
 
Jusque là, j'ai réussi à créer un formulaire qui permet de joindre un fichier (mais pas obligatoire).
Je reçois parfaitement mes mails avec le fichier si il y en a eu un d'ajouté.
 
Le soucis, c'est que j'aimerais pouvoir joindre plusieurs fichiers!
Pour cela, j'ai trouvé le moyen d'ajouter les champs côté formulaire.  
 
Voici mon côté formulaire:

Code :
  1. <head>
  2. <script language="JavaScript">//Pour joindre des fichiers au mail
  3. function addFile(el)
  4. {
  5.     d = document.getElementById("attDiv" );
  6.     iDiv = document.createElement("div" );
  7.     newAttach = document.createElement("input" );
  8.     newAttach.setAttribute("type","file" );
  9.     newAttach.setAttribute("name","fichier[]" ); //notez les []
  10.     iDiv.appendChild(newAttach);
  11.     remLink = document.createElement("a" );
  12.     remLink.appendChild(document.createTextNode("Supprimer" ));
  13.     remLink.setAttribute("href","javascript:void(0)" );
  14.     remLink.setAttribute("onclick","remAttachment()" );
  15.     remLink.setAttribute("class","form1" );
  16.              //ci dessous on est OBLIGE de mettre la fonction comme ça pour
  17.              // des raisons de compatibilité IE...
  18.     remLink.onclick=function(e){
  19.             e=e||window.event;
  20.                                       //taget = Ff   et srcElement = IE
  21.             var theTarget = e.target || e.srcElement;
  22.             child = theTarget.parentNode;   
  23.             d = document.getElementById("attDiv" );
  24.             d.removeChild(child);       
  25.         };
  26.        
  27.     iDiv.appendChild(remLink);
  28.     d.insertBefore(iDiv,d.childNodes[0]);
  29. }
  30. </script> 
  31. </head>
  32. <body><!-- fonction dans body pour les masques de saisies -->
  33. <form id="SignupForm" action="formulaire_verif.php" name="declaration" method="post" enctype="multipart/form-data">
  34.    <fieldset>
  35.      <legend>Documents   </legend>
  36.      <p><input id="profession" name="profession" type="text" /></p>
  37.       <div id='attDiv'> <input type="file" name="fichier[]"><br />
  38.       <a href="javascript:void(0)" onClick="addFile(this)" class="form1">Ajouter un fichier supplémentaire</a> </div>
  39.    </fieldset>
  40. <p><input id="SaveAccount"  name="upload" type="submit" value="Envoyer" /></p>   
  41. </form>
  42. </body>


 
Et mon code côté traitement:

Code :
  1. <?
  2. if (isset($_FILES['fichier']))
  3. {
  4.     //$_FILES existe  
  5.      foreach ($_FILES['fichier']['name'] as $key => $value) {
  6.         $name_file=$value;//nom reel de l'image  
  7.         $tmp_file=$_FILES['fichier']['tmp_name'][$key];//nom temporaire de l'image (sur le serveur)  
  8.    
  9.  
  10.    if( is_uploaded_file($tmp_file) )// si formulaire soumis
  11.    {
  12.     echo $name_file;
  13.    //=====Lecture et mise en forme de la pièce jointe
  14.    $fichiers  = fopen($tmp_file, "r" );
  15.    $attachement = fread($fichiers, filesize($tmp_file));
  16.    $attachement = chunk_split(base64_encode($attachement));
  17.    fclose($fichiers);
  18.    //==========
  19.    $type = "Content-Type: multipart/mixed ;\n";
  20.    $type2 = "Content-Type: text/html; charset=\"ISO-8859-1\"\n ";
  21.    $type2.= "Content-Transfer-Encoding: 8bit\n";
  22.    $ajoutpiece= "Content-Type: application/pdf;\n name=$name_file;\n";
  23.    $ajoutpiece.= "Content-Transfer-Encoding: base64\n";
  24.    $ajoutpiece.= "Content-Disposition: attachment;\n filename=$name_file;\n";
  25.    $ajoutpiece.= "\n".$attachement."\n\n";
  26.    $ajoutpiece.= "\n--".$boundary."--\n";
  27.    }
  28.  }
  29. }
  30. else
  31. {
  32. $type = "Content-Type: text/html; charset=\"ISO-8859-1\"\n ";
  33. $type.= "Content-Transfer-Encoding: 8bit\n";
  34. }
  35. //=====Création de la boundary
  36. $boundary = "-----=".md5(rand());
  37. $boundary_alt = "-----=".md5(rand());
  38. //==========
  39. $adresse="mmm@mmm.com";
  40. $sujet = "Sujet";
  41. //=====Création du header de l'e-mail
  42. $header = "From: $prenom_preneur $nom_preneur <$email>\r\n";
  43. $header.= "$prenom_preneur $nom_preneur <$email>\n";
  44. $header.= "MIME-Version: 1.0\n";
  45. $header.= "$type boundary=\"$boundary\"\n";
  46. //=====Ajout du message au format HTML
  47. if( is_uploaded_file($tmp_file) )// si formulaire soumis
  48. {
  49. $texte = "\n--".$boundary."\n";
  50. $texte.= $type2;
  51. }
  52. else
  53. {
  54. $texte = $type2;
  55. }
  56. $texte.="\n <html><body>..............";
  57. $texte.="</body></html> \n";
  58. $texte.= "\n--".$boundary."\n";
  59. //=====Ajout de la pièce jointe
  60. $texte.= $ajoutpiece;
  61. //==========  
  62. if (mail($adresse,$sujet,$texte,$header))
  63. echo(".......
  64. ?>


 
Ou est-ce que ça coince?
Côté traitement, j'arrive à afficher les noms des fichiers (autant qu'il y en a) donc ma boucle fonctionne bien, mais je ne reçois jamais qu'un seul fichier!
 
Aidez-moi svp, c'est urgent et hyper important.
Merci d'avance


Message édité par bingojm le 04-08-2010 à 20:25:48
Reply

Marsh Posté le 03-08-2010 à 19:41:02   

Reply

Marsh Posté le 04-08-2010 à 18:13:05    

J'ai édité le message ci-dessus car j'ai avancé, mais pas de solution...
 
Help me please...


Message édité par bingojm le 04-08-2010 à 20:26:33
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed