Pièce jointe qui m'arrive vide.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Pièce jointe qui m'arrive vide.

Pièce jointe qui m'arrive vide.

par pierrecalligaro » 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 :
<?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 solutions

Pierre