Problème - Envoi de mail avec fichier en PHP

Résolu
FalconDark Messages postés 8 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 16 septembre 2005 - 16 sept. 2005 à 17:07
FalconDark Messages postés 8 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 16 septembre 2005 - 16 sept. 2005 à 17:35
Bonjour.


Je suis sur OVH (pour situer l'environnement)


Dans le même dossier j'ai :



- mon fichier mail3.php avec le formulaire

<html>



<form ENCTYPE="multipart/form-data" action="./mail4.php" method=POST>
<center>
De:

Destinataire:

Sujet:

Texte :
<textarea name="message" rows="15" cols="40"></textarea>

</center>
</form>



</html>

- ma page mail4.php qui m'envoie les infos

<html>
<center>
<?


$name_file = $_FILES['monfichier']['name'];
$source=$_FILES['monfichier']['tmp_name'];


move_uploaded_file($source, "./".$name_file);


$extension=get_extension($name_file);


$type="text/plain";
if($type=="doc")
{
$type="text/vnd.ms-word";
}
else if($type=="xls")
{
$type="text/vnd.ms-excel";
}


$type2="image/png";


if($extension=="gif")
{
$type2="image/gif";
}
else if($extension=="bmp")
{
$type2="image/bmp";
}


function get_extension($filename)
{
$parts = explode('.',$filename);
$last = count($parts) - 1;
$ext = $parts[$last];
return $ext;
}


//----------------------------------
// Construction de l'entête
//----------------------------------


if($_POST['to']!="")
{
$boundary = "-----=".md5(uniqid(rand()));
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary="$boundary"\r\n";
$header .= "\r\n";


$msg = "Je vous informe que ceci est un message au format MIME 1.0 multipart/mixed.\r\n";


$msg .= "--$boundary\r\n";


$msg .= "Content-Type: $type; charset="iso-8859-1"\r\n";
$msg .= "Content-Transfer-Encoding:8bit\r\n";
$msg .= "\r\n";
$msg .= $_POST['message'];
$msg .= "\r\n";


if($name_file!="")
{
$file = $name_file;
$fp = fopen($file, "rb");
$attachment = fread($fp, filesize($file));
fclose($fp);


$attachment = chunk_split(base64_encode($attachment));



$msg .= "--$boundary\r\n";
$msg .= "Content-Type: $type2; name="$file"\r\n";
$msg .= "Content-Transfer-Encoding: base64\r\n";
$msg .= "Content-Disposition: inline; filename="$file"\r\n";
$msg .= "\r\n";
$msg .= $attachment . "\r\n";
$msg .= "\r\n\r\n";
$msg .= "--$boundary--\r\n";
}


$destinataire = $_POST['to'];
$expediteur = $_POST['from'];
$reponse = $expediteur;
echo "Mail envoyé à $destinataire";


mail($destinataire, $_POST['sujet'], $msg,
"Reply-to: $reponse\r\nFrom: $expediteur\r\n".$header);


}



if($name_file!="")
{
unlink($name_file);
}
print("
\n");
print("
Envoyer un autre mail
");
?>
</center>

</html>

Quand je cliques sur "envoie" je reçois bien le mail... mais j'ai un problème avec le fichier. Il n'est pas en pièce jointe mais contenu dans le corps du mail... en gros j'ai une suite incessante de caractère XD


Quelqu'un voit-il où est l'erreur ? j'ai beau chercher et je ne trouve pas @_@
Si vous trouvez je serait soulagé parce que le client ne va pas tarder à revenir à la charge



Merci d'avance :)

1 réponse

FalconDark Messages postés 8 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 16 septembre 2005
16 sept. 2005 à 17:35
C'est résolu

L'astuce est de remplacer "\r\n" par "\n"

Voilou
3
Rejoignez-nous