Coucou,
Voilà je suis en train de faire une appli en php et à un moment je dois envoyer un mail avec un fichier joint (normalement le fichier joint sera en .slk (format SYLK (le RTF d'excel)).j'ai un formulaire avec le destinataire, le sujet, le message, le fichier ... jusque là tout va bien.
Lors du clic sur le bouton envois, j'ai un code qui s'exécute our envoyer le mail et le fichier. jusqu'ici tout va bien :je recois le message, le fichier joint et c'est quand j'essaye d'ouvrir le fichier que je ne peux pas. il me met une erreur comme si mon fichier est corompu.
Le formulaire : (mail.php)
<html>
<body>
<form ENCTYPE="multipart/form-data" action="index.php?page=commande/mail4.php" method="POST">
<table cellpadding="0" cellspacing="0">
<tr bgcolor="#CCCCCC">
<td >De :</td>
<td><input type=text name = "from" size="30"></td>
<td>Fournisseurs : </td>
</tr>
<tr bgcolor="#CCCCCC">
<td>Destinataire : </td>
<td><input type=text name = "to" size="30"></td>
<td><select name="fournisseur">
<? $sql_query = "SELECT * FROM fournisseur ";
$sql_results = mysql_query($sql_query);
while($row = mysql_fetch_array($sql_results))
{?>
<option value="<? echo $row['id_fournisseur'];?>"><? echo ucfirst(strtolower($row['libl']));?></option>
<? } ?>
</select>
</td>
</tr>
<tr bgcolor="#CCCCCC">
<td>Sujet : </td>
<td><input type=text name = "sujet" size="30"></td>
<td></td>
</tr>
<tr bgcolor="#CCCCCC">
<td>Message : </td>
<td><textarea name="message" rows="15" cols="40"></textarea></td>
<td></td>
</tr>
<tr bgcolor="#CCCCCC">
<td>Joindre un fichier : </td>
<td><INPUT TYPE=FILE NAME="monfichier"></td>
<td></td>
</tr>
<tr bgcolor="#CCCCCC">
<td></td>
<td></td>
<td><input type=submit value="envoi"></td>
</tr>
</table>
</form>
</body>
</html>
Le code pour le mail : (mail4.php)
<html>
<body>
<center>
<?
$name_file = $_FILES['monfichier']['name'];
$source=$_FILES['monfichier']['tmp_name'];
move_uploaded_file($source, "./".$name_file);
$extension=get_extension($name_file);
// on essaie de reconnaitre l'extension
switch($extension){
case "gz": $type = "application/x-gzip"; break;
case "tgz": $type = "application/x-gzip"; break;
case "zip": $type = "application/zip"; break;
case "pdf": $type = "application/pdf"; break;
case "png": $type = "image/png"; break;
case "gif": $type = "image/gif"; break;
case "jpg": $type = "image/jpeg"; break;
case "txt": $type = "text/plain"; break;
case "htm": $type = "text/html"; break;
case "html": $type = "text/html"; break;
case "doc": $type = "text/vnd.ms-word"; break;
case "xls": $type= "text/vnd.ms-excel"; break;
case "slk": $type= "text/vnd.ms-excel"; break;
default: $type = "application/octet-stream"; break;
}
function get_extension($filename)
{
$parts = explode('.',$filename);
$last = count($parts) - 1;
$ext = $parts[$last];
return $ext;
}
//----------------------------------
// Construction de l'entête
//----------------------------------
if ((isset($_POST['to'])) && (!empty($_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: text/plain; charset=\"iso-8859-1\"\r\n";
$msg .= "Content-Transfer-Encoding:8bit\r\n";
$msg .= "\r\n";
$msg .= $_POST['message'];
$msg .= "\r\n";
if(!empty($name_file))
{
$file = $name_file;
$handle = fopen($_POST['monfichier'], "rb");
if ($handle == false)
{
echo 'fichier non ouvert';
}
else
{
$attachment = fread($handle, filesize($_POST['monfichier']));
fclose($handle);
$attachment = chunk_split(base64_encode($attachment));
/* Genere le code */
$msg .= "--$boundary\r\n";
$msg .= "Content-Type: $type; 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(!empty($name_file))
{
unlink($name_file);
}
print("<br>\n");
print("<br><A parent.location.href=\"index.php?page=commande/mail.php\" target=\"principal\"><font size=2>Envoyer un autre mail</font></A>");
?>
</center>
</body>
</html>
Voilà donc si pouvez m'aider vous etes les bienvenus !!!!