J'ai un script php qui me permet d'envoyer un mail avec pièce jointe, le script fonctionne et envoie le mail ainsi que la pièce jointe mais le problème est le suivant :
Quand j'essaye d'ouvrir la pièce jointe elle fait 0 octet et me donne un message d'erreur du style : le fichier a été envoyé en tant que pièce jointe et n'a pas pu être décodé correctement...
Voici le script en question
<?php
// Couleur du texte des champs si erreur saisie utilisateur
$color_font_warn="#FF0000";
// Couleur de fond des champs si erreur saisie utilisateur
$color_form_warn="#FFCC66";
// Ne rien modifier ci-dessous si vous n’êtes pas certain de ce que vous faites !
if(isset($_POST['submit'])){
$erreur="";
// Nettoyage des entrées
while(list($var,$val)=each($_POST)){
if(!is_array($val)){
$$var=strip_tags($val);
}else{
while(list($arvar,$arval)=each($val)){
$$var[$arvar]=strip_tags($arval);
}
}
}
// Formatage des entrées
$f_1=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_1)));
$f_2=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_2)));
$f_3=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_3)));
$f_4=strip_tags(trim($f_4));
// Verification des champs
if(strlen($f_1)<2){
$erreur.="<li><span class='txterror'>Le champ « Nom » est vide ou incomplet.</span>";
$errf_1=1;
}
if(strlen($f_2)<2){
$erreur.="<li><span class='txterror'>Le champ « Prénom » est vide ou incomplet.</span>";
$errf_2=1;
}
if(strlen($f_4)<2){
$erreur.="<li><span class='txterror'>Le champ « Email » est vide ou incomplet.</span>";
$errf_4=1;
}else{
if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
'@'.
'[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
'[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',
$f_4)){
$erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>";
$errf_4=1;
}
}
if(strlen($f_5)<2){
$erreur.="<li><span class='txterror'>Le champ « Message » est vide ou incomplet.</span>";
$errf_5=1;
}
//-----------------------------------------------
//DECLARE LES VARIABLES
//-----------------------------------------------
$message_texte="Nom : ".$f_1."\n";
$message_texte.="Prénom : ".$f_2."\n";
$message_texte.="Société : ".$f_3."\n";
$message_texte.="Email : ".$f_4."\n";
$message_texte.="Message : ".$f_5."\n";
$email_expediteur=$f_4;
$email_reply=$f_4;
//-----------------------------------------------
//GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML
//-----------------------------------------------
$frontiere = '-----=' . md5(uniqid(mt_rand()));
//-----------------------------------------------
//HEADERS DU MAIL
//-----------------------------------------------
$header = 'From: "'.$f_1.'" <'.$email_expediteur.'>'."\n";
$header .= 'Return-Path: <'.$email_reply.'>'."\n";
$header .= 'MIME-Version: 1.0'."\n";
$header .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"';
//-----------------------------------------------
//MESSAGE TEXTE
//-----------------------------------------------
$message = 'This is a multi-part message in MIME format.'."\n\n";
$message .= '--'.$frontiere."\n";
$message .= 'Content-Type: text/plain; charset="utf-8"'."\n";
$message .= 'Content-Transfer-Encoding:8bit'."\n\n";
$message .= $message_texte."\n\n";
$message .= '--'.$frontiere."\n";
//-----------------------------------------------
//PIECE JOINTE
//-----------------------------------------------
$fileName = $_FILES['cv']['name'];
$fileType = $_FILES['cv']['type'];
$fileSource = $_FILES['cv']['tmp_name'];
$message .= 'Content-Type:'.$fileType.'; name="'.$fileName.'"'."\n";
$message .= 'Content-Transfer-Encoding: base64'."\n";
$message .= 'Content-Disposition:attachement; filename="'.$fileName.'"'."\n\n";
$message .= chunk_split(base64_encode(file_get_contents($fileSource)))."\n";
$message .= '--'.$frontiere.'--'."\n";
if($erreur==""){
// Création du message
$titre="MESSAGE DU SITE";
if(mail('mail@wanadoo.fr',$titre,$message,$header)){
$ok_mail="true";
}else{
$erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
}
}
}
?>
Si quelqu'un a une solution, je suis preneur car je cherche depuis des heures et mon niveau de programmation PHP est très limité ;)