Pièce jointe dans un formulaire
Bonjour à tous,
Je retape actuellement un site qui contient une page contenant un formulaire incluant l'ajout d'une pièce jointe.
J'ai cherché sur Internet pendant des heures, trouvant diverses pages me proposant des solutions que j'ai tenté d'adapter à mes besoins, mais je n'y parvient simplement pas.
j'ai notamment trouvé cette page : http://a-pellegrini.developpez.com/t...php/mail/#L3.4
que je l'ai transformé en :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
<?
// Récupération des information du formulaire
$to = 'adresse-du-destinataire@domaine.com';
$name = $_POST['name'];
$from = $_POST['from'];
$tel = $_POST['tel'];
$object = $_POST['object'];
$contenu = $_POST['contenu'];
// clé aléatoire de limite
$boundary = md5(uniqid(microtime(), TRUE));
// Headers
$headers = 'From: '.$from."\r\n";
$headers .= 'Mime-Version: 1.0'."\r\n";
$headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
$headers .= "\r\n";
// Message HTML
$msg = '--'.$boundary."\r\n";
$msg .= 'Content-type: text/html; charset=\"iso-8859-1\"'."\r\n\r\n";
$msg .= 'Nom : '.$name."<br>";
$msg .= 'Tél : '.$tel."<br><br>";
$msg .= $contenu."\r\n";
// Pièce jointe 1
$file_name = $_FILES['piece_jointe'];
if (file_exists($file_name))
{
$file_type = filetype($file_name);
$file_size = filesize($file_name);
$handle = fopen($file_name, 'r') or die('File '.$file_name.'can t be open');
$content = fread($handle, $file_size);
$content = chunk_split(base64_encode($content));
$f = fclose($handle);
$msg .= '--'.$boundary."\r\n";
$msg .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
$msg .= 'Content-transfer-encoding:base64'."\r\n\r\n";
$msg .= $content."\r\n";
}
// Fin
$msg .= '--'.$boundary."\r\n";
// Function mail()
mail($to, $object, $msg, $headers); |
Et voici mon formulaire :
Code:
1 2 3 4 5 6 7 8 9 10
|
<form id='soumission' method="post" enctype="multipart/form-data" action="<?php echo( $_SERVER['REQUEST_URI'] ); ?>">
<label for="name">Votre nom</label><input type="text" name="name" id="name" size="25" value="<?php echo( $name ); ?>" />
<label for="mail">Votre adresse mail</label><input type="text" name="from" id="from" size="25" value="<?php echo( $from ); ?>" />
<label for="tel">Votre téléphone</label><input type="text" name="tel" id="tel" size="25" value="<?php echo( $tel ); ?>" />
<label for="object">Objet</label><input type="text" name="object" id="object" size="25" value="<?php echo( $object ); ?>" />
<label for="contenu">Message</label><textarea name="contenu" id="contenu" rows="10" cols="70"><?php echo( $contenu ); ?></textarea>
<label for="fichier">Piece jointe</label><input type="file" name="piece_jointe" id="piece_jointe" />
<input type="reset" name="reset" value="Effacer" /><input type="submit" name="send" value="Envoyer" />
</form> |
Mais cela ne fonctionne pas. Le mail est bien envoyé avec toutes les données, mais la pièce jointe n'apparaît pas. Pourriez-vous m'aider à trouver mon/mes erreur(s) et me dire ce que je dois modifier pour que le formulaire fonctionne pour l'envoie de fichiers (.doc, .pdf ou autre).
D'avance un grand merci de votre aide
Thufir Hawat