Votre question

Formulaire php+mail pièce jointe

Tags :
  • Php
  • Programmation
Dernière réponse : dans Programmation
9 Février 2009 17:36:34

Bonjour,

Je suis occupé de mettre en place un fomulaire html qui fonctionne très bien dans lequel, les invités doivent y laisser des données et une pièce jointe.
Quand je click sur envoie les données sont bien transférér vers le code php pour l'envoie du mail.

Mais le fichier joint n'est pas transféré .

Pouvez-vous m'aider ?

la variable $scan est le fichier à transférer.

Je vous joint le code html et php

HTML:
Code :



  1. <html>
  2. <!-- Date de création: 06/02/2008 -->
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
  5. <title></title>
  6. <meta name="description" content="">
  7. <meta name="keywords" content="">
  8. <meta name="author" content="Usager non enregistre">
  9. <meta name="generator" content="monsoft"
  10. </head>
  11. <body>
  12. <form method="post" action="envoimail.php" name="formulaire">
  13.  
  14. Nom : <input name="nom" size="30" maxlength="50" type="text">
  15.  
  16. <br /><br />
  17. Prénom : <input name="prenom" size="30" maxlength="50" type="text"><br /><br />
  18.  
  19. E-mail : <input name="mail" size="30" maxlength="50" type="text"><br /><br />
  20.  
  21. Commentaires :
  22. <textarea name="commentaires" cols="30" rows="6" wrap="soft"></textarea><br /><br />
  23.  
  24. Fichier : <input name="scan" size="40" maxlength="60" type="file"><br /><br />
  25.  
  26. <input name="bouton" value="Envoyer" type="submit">
  27.  
  28. </form>
  29. </body>
  30. </html>




et le code php

Code :



  1. <?php
  2.  
  3. $nom = $_POST['nom'];
  4. $prenom = $_POST['prenom'];
  5. $mail = $_POST['mail'];
  6. $commentaires= $_POST['commentaires'];
  7. $scan=$_post['scan'];
  8.  
  9.  
  10. //=====Déclaration des messages au format texte et au format HTML
  11. $message_txt ="Nom : ";
  12. $message_html = "<html><head></head><body><b>Données pour la demande d'accès</b>,<br><br> <b>Nom :</b> $nom <br> <b>Prenom :</b> $prenom <br> <b>Email: </b> $mail </body></html>";
  13. //==========
  14.  
  15. //=====Lecture et mise en forme de la pièce jointe
  16. $fichier = fopen($scan, "r");
  17. $attachement = fread($fichier, filesize($scan));
  18. $attachement = chunk_split(base64_encode($attachement));
  19. fclose($fichier);
  20. //==========
  21.  
  22. //=====Création de la boundary
  23. $boundary = "-----=".md5(rand());
  24. $boundary_alt = "-----=".md5(rand());
  25. //==========
  26.  
  27. //=====Définition du sujet
  28. $sujet = "Hey mon ami !";
  29. //=========
  30.  
  31. //=====Création du header de l'e-mail
  32. $header = "From: \"WeaponsB\"<.....@skynet.be>\n";
  33. $header.= "Reply-to: \"WeaponsB\" <......@skynet.be>\n";
  34. $header.= "MIME-Version: 1.0\n";
  35. $header.= "Content-Type: multipart/mixed;\n boundary=\"$boundary\"\n";
  36. //==========
  37.  
  38. //=====Création du message
  39. $message = "\n--".$boundary."\n";
  40. $message.= "Content-Type: multipart/alternative;\n boundary=\"$boundary_alt\"\n";
  41. $message.= "\n--".$boundary_alt."\n";
  42. //=====Ajout du message au format texte
  43. $message.="Content-Type: text/plain; charset=\"ISO-8859-1\"\n";
  44. $message.="Content-Transfer-Encoding: 8bit\n";
  45. $message.= $message_txt."\n";
  46. //==========
  47.  
  48. $message.= "\n--".$boundary_alt."\n";
  49.  
  50. //=====Ajout du message au format HTML
  51. $message.="Content-Type: text/html; charset=\"ISO-8859-1\"\n";
  52. $message.="Content-Transfer-Encoding: 8bit\n";
  53. $message.= $message_html."\n";
  54. //==========
  55.  
  56. //=====On ferme la boundary alternative
  57. $message.= "\n--".$boundary_alt."--\n";
  58. //==========
  59.  
  60.  
  61.  
  62. $message.= "\n--".$boundary."\n";
  63.  
  64. //=====Ajout de la pièce jointe
  65. $message.= "Content-Type: application/pdf;\n name=\"$scan\"\n";
  66. $message.= "Content-Transfer-Encoding: base64\n";
  67. $message.= "Content-Disposition: attachment;\n filename=\"$scan\"\n";
  68. $message.= "\n".$attachement."\n\n";
  69. $message.= "\n--".$boundary."--\n";
  70. //==========
  71. //=====Envoi de l'e-mail
  72. mail("......@hotmail.com",$sujet,$message,$header);
  73.  
  74. //==========
  75. ?>


Autres pages sur : formulaire php mail piece jointe

a c 232 L Programmation
20 Février 2009 04:40:55

Salut,

Pour pouvoir envoyer des fichiers, il faut ajouter enctype="multipart/form-data" à ta balise <form>.
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS