récupérer pe message et la pièce jointe dans le 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 : récupérer pe message et la pièce jointe dans le mail

Re: récupérer pe message et la pièce jointe dans le mail

par Aureusms » 24 nov. 2011, 23:41

Même en mode texte ?
Que disent les entêtes ?

récupérer pe message et la pièce jointe dans le mail

par mars77 » 24 nov. 2011, 21:19

Hello à tous,

J'ai passé toute la journée a faire un code pour envoyer un mail via un formulaire avec une pièce jointe.
Je reçois bien le mail dans ma boîte avec la petite trombone qui me dit que j'ai une pièce jointe et quand j ouvre le mail, il n'y a pas le texte du message et aucune pièce jointe. voilà mon code.
<?php
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$mail = $_POST['mail'];
$commentaires= $_POST['commentaires'];
$fichier=$_POST['fichier'];
$upload=$_POST['upload'];


if( isset($_POST['upload']) ) // si formulaire soumis
{
$content_dir = 'upload/'; // dossier où sera déplacé le fichier
$tmp_file = $_FILES['fichier']['tmp_name'];
if( !is_uploaded_file($tmp_file) )
{
exit("Le fichier est introuvable");
}
// on vérifie maintenant l'extension
$type_file = $_FILES['fichier']['type'];

// on copie le fichier dans le dossier de destination
$name_file = $_FILES['fichier']['name'];
if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
{
exit("Impossible de copier le fichier dans $content_dir");
}
echo "Le fichier a bien été uploadé";
}


//====éclaration des messages au format texte et au format HTML
$message_txt ="Nom : ";
$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>";
//==========

//=====Lecture et mise en forme de la pièce jointe
$fichier1  = fopen($content_dir . $name_file, "r" );
$attachement = fread($fichier1, filesize($content_dir . $name_file));
$attachement = chunk_split(base64_encode($attachement));
fclose($fichier1);
//==========
//=====Création de la boundary
$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());
//==========

//====éfinition du sujet
$sujet = "Salut  mon ami !";
//=========

//=====Création du header de l'e-mail
$header = "From: \"Mars\"<[email protected]>\n";
$header.= "Reply-to: \"Mars\" <[email protected]>\n";
$header.= "MIME-Version: 1.0\n";
$header.= "Content-Type: multipart/mixed;\n boundary=\"$boundary\"\n";
//==========

//=====Création du message
$message = "\n--".$boundary."\n";
$message.= "Content-Type: multipart/alternative;\n boundary=\"$boundary_alt\"\n";
$message.= "\n--".$boundary_alt."\n";
//=====Ajout du message au format texte
$message.="Content-Type: text/plain; charset=\"ISO-8859-1\"\n";
$message.="Content-Transfer-Encoding: 8bit\n";
$message.= $message_txt."\n";
//==========

$message.= "\n--".$boundary_alt."\n";

//=====Ajout du message au format HTML
$message.="Content-Type: text/html; charset=\"ISO-8859-1\"\n";
$message.="Content-Transfer-Encoding: 8bit\n";
$message.= $message_html."\n";
//==========

//=====On ferme la boundary alternative
$message.= "\n--".$boundary_alt."--\n";
//==========

$message.= "\n--".$boundary."\n";

//=====Ajout de la pièce jointe
$message.= "Content-Type: application/pdf;\n name=\"$fichier\"\n";
$message.= "Content-Transfer-Encoding: base64\n";
$message.= "Content-Disposition: attachment;\n filename=\"$fichier\"\n";
$message.= "\n".$attachement."\n\n";
$message.= "\n--".$boundary."--\n";
echo $message;
//==========
//=====Envoi de l'e-mail
mail("[email protected]",$sujet,$message,$header);
?>
J'ai contrôlé si la pièce jointe était bien upload. elle est dans le dossier . Là je ne trouve vraiment pas pourquoi cela ne fonctionne pas.

Merci à celui qui pourra m'aider.