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

Eléphant du PHP | 121 Messages

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.

ViPHP
ViPHP | 1996 Messages

24 nov. 2011, 23:41

Même en mode texte ?
Que disent les entêtes ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr