Pièce jointe qui m'arrive vide.
Posté : 28 mars 2006, 10:34
Bonjour à tous,
J’ai utilisé un script, que j’ai trouvé sur le net, pour envoyer un mail avec pièce jointe. Mon soucie, c’est que ma pièce jointe qui est par exemple essai.txt est vide !!!!
Au départ mon fichier fait 460 octets, lorsque je le reçois via mon mail en pièce jointe, il en fait plus que 2.
J’ai utilisé d’autres scripts qui me donnent le même résultat.
Voici le script que j’ai utilisé
mail.php :
Pierre
J’ai utilisé un script, que j’ai trouvé sur le net, pour envoyer un mail avec pièce jointe. Mon soucie, c’est que ma pièce jointe qui est par exemple essai.txt est vide !!!!
Au départ mon fichier fait 460 octets, lorsque je le reçois via mon mail en pièce jointe, il en fait plus que 2.
J’ai utilisé d’autres scripts qui me donnent le même résultat.
Voici le script que j’ai utilisé
mail.php :
<?php
require "mime_mail.class.php";
$fichier_attache = fread(fopen("receipt.txt", "r"), filesize("receipt.txt"));
$mail = new mime_mail();
$mail->to = "[email protected]"; // Adresse email de reception
$mail->subject = "Test"; // Sujet
$mail->body = "Ceci est un test."; // Corps du message
$mail->from = "[email protected]"; // Adresse email de l'expediteur (optionnel)
$mail->headers = "Date: "; // Entetes supplementaires (optionnel)
$mail->attach("$fichier", "receipt.txt");
// envoi du message
$mail->send();
?>
mime_mail.class.php :
<?php
class mime_mail
{
var $parts;
var $to;
var $from;
var $headers;
var $subject;
var $body;
// constructeur
function mime_mail()
{
$this->parts = array();
$this->to = "";
$this->from = "";
$this->subject = "";
$this->body = "";
$this->headers = "";
}
// attache un fichier au message
function attach($message,$name,$ctype = '')
{
// type de contenu non defini
if(empty($ctype)){
// on essaie de reconnaitre l'extension
switch(strrchr(basename($name), ".")){
case ".gz": $ctype = "application/x-gzip"; break;
case ".tgz": $ctype = "application/x-gzip"; break;
case ".zip": $ctype = "application/zip"; break;
case ".pdf": $ctype = "application/pdf"; break;
case ".png": $ctype = "image/png"; break;
case ".gif": $ctype = "image/gif"; break;
case ".jpg": $ctype = "image/jpeg"; break;
case ".txt": $ctype = "text/plain"; break;
case ".htm": $ctype = "text/html"; break;
case ".html": $ctype = "text/html"; break;
default: $ctype = "application/octet-stream"; break;
}
}
$this->parts[] =
array (
"ctype" => $ctype,
"message" => $message,
"encode" => $encode,
"name" => $name
);
// fin de fonction
}
// fonction utilisee pour contruire le message MIME
// utilisee depuis build_multipart()
function build_message($part)
{
$message = $part[ "message"];
$message = chunk_split(base64_encode($message));
$encoding = "base64";
return "Content-Type: ".$part[ "ctype"].
($part[ "name"]? "; name = \"".$part[ "name"]. "\"" : "").
"\nContent-Transfer-Encoding: $encoding\n\n$message\n";
}
// compose le message MIME
// utilisee depuis send()
function build_multipart()
{
$boundary = "b".md5(uniqid(time()));
$multipart = "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary";
for($i = sizeof($this->parts) - 1; $i >= 0; $i--)
{
$multipart .= "\n".$this->build_message($this->parts[$i]). "--$boundary";
}
return $multipart.= "--\n";
}
// envoie le message
// derniere fonction a appeler
function send()
{
$mime = "";
// parametres optionnels
if (!empty($this->from)) $mime .= "From: ".$this->from. "\n";
if (!empty($this->headers)) $mime .= $this->headers. "\n";
if (!empty($this->body)) $this->attach($this->body, "", "text/plain");
// entete MIME
$mime .= "MIME-Version: 1.0\n".$this->build_multipart();
// envoi du message
mail($this->to, $this->subject, "", $mime);
}
}; // fin de la classe
?>
Merci d'avance pour vos solutionsPierre