Problème Formulaire/Mail

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème Formulaire/Mail

Re: Problème Formulaire/Mail

par moogli » 11 déc. 2014, 00:09

salut,

regarde ce
commentaire de la doc
il y a ce qui te manque
un autre séparateur pour les pièce jointes +
Content-Disposition: attachment;
filename="le nom du fichier"

pour la pièce jointe

Je pense que le texte "incompréhensible" est simplement le contenu du fichier encodé base64 (d'ailleurs pas d'encodage du fichier ?)

Tu n'as pas besoin de " pour utiliser une variable (c'est même anti performant).

donc mail ($destinataire, $subject, $message, $headers);

Dernière chose : tu peux t'appuyer sur une librairie comme phpmailer pour faire le boulot à ta place. La chose est éprouvée et relativement simple d'utilisation ;)

@+

Problème Formulaire/Mail

par Mac Skater » 09 déc. 2014, 01:14

Salut à tous et à toutes !

Voila j'ai tenté un petit formulaire de contact, qui m'envois les données par mail, ainsi que la pièce jointe.

Mon seul soucis, c'est que quand le mail est reçu, j'ai bien les infos et la pièce jointe, mais entre les deux il y à des millers de Lettres et de Chiffres incomprehensibles...

Une Solution ?



Le HTML :
<!DOCTYPE html>
<html>

  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <link rel="stylesheet" type="text/css" href="style.css">
    <title> Formulaire de Contact </title>
  </head>

  <body>

    <div id="cadreformulaire">

    <form method="post" action="traitement.php" enctype="multipart/form-data" accept-charset="UTF-8">

        <h2 class="titres" for="titre"> Contact </h2>

            <input type="text" class="exemple" name="prenom" placeholder="Ex: Hugo" required>

            <input type="text" class="exemple" name="nom" placeholder="Ex: Maury" required/>

            <input type="email" class="exemple" name="email" placeholder="Email" required/>

        <h2 class="titres">Message</h2>

            <textarea class="exemple" name="texte" placeholder="Ex: Votre formulaire fonctionne à merveille !" required></textarea>

        <div>
            <label for="piecejointe">Ajouter une pièce jointe</label>
            <input type="file" name="piecejointe"/>
        </div>
  
              <button type="submit" name="envoyer" class="button">Envoyer</button>

    </form>
    </div>

   </body>

  </html>
Le PHP :
<?php

$destinataire = "[email protected]";
$nom= $_POST['nom'];
$prenom = $_POST['prenom'];
$email = $_POST['email']; 
$texte = $_POST['texte'];
$data = chunk_split(base64_encode($data));
 
/* GET File Variables */ 
$tmpName = $_FILES['piecejointe']['tmp_name']; 
$fileType = $_FILES['piecejointe']['type']; 
$fileName = $_FILES['piecejointe']['name']; 
 
/* Start of headers */ 
$headers = "From: $email"; 
 
if (file($tmpName)) { 
  /* Reading file ('rb' = read binary)  */
  $file = fopen($tmpName,'rb'); 
  $data = fread($file,filesize($tmpName)); 
  fclose($file); 
 
  /* a boundary string */
  $randomVal = md5(time()); 
  $mimeBoundary = "==Multipart_Boundary_x{$randomVal}x"; 
 
  /* Header for File piecejointe */
  $headers .= "\nMIME-Version: 1.0\n"; 
  $headers .= "Content-Type: multipart/mixed;\n" ;
  $headers .= " boundary=\"{$mimeBoundary}\""; 
 
  /* Multipart Boundary above message */
  $message = "This is a multi-part message in MIME format.\n\n" . 
  "--{$mimeBoundary}\n" . 
  "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . 
  "Content-Transfer-Encoding: 7bit\n\n" . 
  $message . "Prenom: $prenom\n\n" . "Nom: $nom\n\n" . "Email: $email\n\n" . "Annonce: $texte\n\n" .
 
  /* Adding attchment-file to message*/
  $message .= "--{$mimeBoundary}\n" . 
  "Content-Type: {$fileType};\n" . 
  " name=\"{$fileName}\"\n" . 
  "Content-Transfer-Encoding: base64\n\n" . 
  $data . "\n\n" . 
  "--{$mimeBoundary}--\n"; 
} 
 
mail ("$destinataire","$subject","$message","$headers"); 
?>