Bonjour à tous,
Je crée actuellement un formulaire avec la possibilité d'envoyer une pièce jointe, mon code me semble correct mais je ne reçois pas la pièce jointe, je reçois uniquement le contenu du message.
Voici mon code simplifié :
// Adresse de réception du formulaire
$email_dest = '[email protected]';
//-----------------------------------------------
//GENERE LA FRONTIERE DU MAIL ENTRE HTML ET PIECE JOINTE
//-----------------------------------------------
$frontiere = '-----=' . md5(uniqid(mt_rand()));
//-----------------------------------------------
//HEADERS DU MAIL
//-----------------------------------------------
$headers = 'MIME-Version: 1.0'."\n";
$headers .= 'From: '.$email.''."\n";
$headers .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"';
//-----------------------------------------------
//CONSTRUCTION MESSAGE HTML
//-----------------------------------------------
$subject = 'Message de ma page';
$entete = '<html><head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8>
</head>
<body bgcolor="#FFFFFF">';
$corps = '<font face="Verdana" size="2" color="#003366">Vous avez reçu un message de votre page</font>';
$fin = '</body></html>';
$sortie = $entete . $corps . $fin;
//-----------------------------------------------
//AJOUT DU MESSAGE HTML AU MAIL
//-----------------------------------------------
$mail = 'This is a multi-part message in MIME format.'."\n\n";
$mail .= '--'.$frontiere."\n";
$mail .= 'Content-Type: text/html; charset=utf-8'."\n";
$mail .= 'Content-Transfer-Encoding: 7bit'."\n\n";
$mail .= $sortie."\n\n";
$mail .= '--'.$frontiere.'--'."\n";
//-----------------------------------------------
//PIECE JOINTE
//-----------------------------------------------
$attach_tmp_name = $_FILES['attach']['tmp_name'];
$attach_type = $_FILES['attach']['type'];
$attach_name = $_FILES['attach']['name'];
$mail .= 'Content-Type: '.$attach_type.'; name="'.$attach_name.'"'."\n";
$mail .= 'Content-Disposition: attachement; filename="'.$attach_name.'"'."\n";
$mail .= 'Content-Transfer-Encoding: base64'."\n\n";
$mail .= chunk_split(base64_encode(file_get_contents($attach_tmp_name)))."\n\n";
$mail .= '--'.$frontiere.'--'."\n";
//Envoi du message
$resultat = mail($email_dest,$subject,$mail,$headers);
if($resultat) {
$message = 'Votre message a bien été envoyé.';
} else {
$message = 'Echec dans l\'envoi de votre message, veuillez réessayer.';
}
Est-ce que vous voyez quelque chose qui cloche, parce que là j'ai tout tenté
D'avance merci pour vos réponses
Bonjour à tous,
Je crée actuellement un formulaire avec la possibilité d'envoyer une pièce jointe, mon code me semble correct mais je ne reçois pas la pièce jointe, je reçois uniquement le contenu du message.
Voici mon code simplifié :
[php]
// Adresse de réception du formulaire
$email_dest = '
[email protected]';
//-----------------------------------------------
//GENERE LA FRONTIERE DU MAIL ENTRE HTML ET PIECE JOINTE
//-----------------------------------------------
$frontiere = '-----=' . md5(uniqid(mt_rand()));
//-----------------------------------------------
//HEADERS DU MAIL
//-----------------------------------------------
$headers = 'MIME-Version: 1.0'."\n";
$headers .= 'From: '.$email.''."\n";
$headers .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"';
//-----------------------------------------------
//CONSTRUCTION MESSAGE HTML
//-----------------------------------------------
$subject = 'Message de ma page';
$entete = '<html><head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8>
</head>
<body bgcolor="#FFFFFF">';
$corps = '<font face="Verdana" size="2" color="#003366">Vous avez reçu un message de votre page</font>';
$fin = '</body></html>';
$sortie = $entete . $corps . $fin;
//-----------------------------------------------
//AJOUT DU MESSAGE HTML AU MAIL
//-----------------------------------------------
$mail = 'This is a multi-part message in MIME format.'."\n\n";
$mail .= '--'.$frontiere."\n";
$mail .= 'Content-Type: text/html; charset=utf-8'."\n";
$mail .= 'Content-Transfer-Encoding: 7bit'."\n\n";
$mail .= $sortie."\n\n";
$mail .= '--'.$frontiere.'--'."\n";
//-----------------------------------------------
//PIECE JOINTE
//-----------------------------------------------
$attach_tmp_name = $_FILES['attach']['tmp_name'];
$attach_type = $_FILES['attach']['type'];
$attach_name = $_FILES['attach']['name'];
$mail .= 'Content-Type: '.$attach_type.'; name="'.$attach_name.'"'."\n";
$mail .= 'Content-Disposition: attachement; filename="'.$attach_name.'"'."\n";
$mail .= 'Content-Transfer-Encoding: base64'."\n\n";
$mail .= chunk_split(base64_encode(file_get_contents($attach_tmp_name)))."\n\n";
$mail .= '--'.$frontiere.'--'."\n";
//Envoi du message
$resultat = mail($email_dest,$subject,$mail,$headers);
if($resultat) {
$message = 'Votre message a bien été envoyé.';
} else {
$message = 'Echec dans l\'envoi de votre message, veuillez réessayer.';
}
[/php]
Est-ce que vous voyez quelque chose qui cloche, parce que là j'ai tout tenté :cry:
D'avance merci pour vos réponses