Probléme avec script mail chez Free

SteufDu59 Messages postés 18 Date d'inscription jeudi 19 août 2004 Statut Membre Dernière intervention 9 septembre 2006 - 2 nov. 2004 à 15:53
SteufDu59 Messages postés 18 Date d'inscription jeudi 19 août 2004 Statut Membre Dernière intervention 9 septembre 2006 - 2 nov. 2004 à 16:49
J'ai donc un formulaire avec la possibilité de joindre une image, donc en fichier joint, le script niveau formulaire est :

if ($fonctionmail=="oui")
{
// envoi par mail de l'annonce
require ("mime_mail.class.php"); //je m'envoie tout ça par mail

while (list($key, $value) = each($HTTP_POST_VARS))
{$corps .$key . ' ' . $value . "\r\n";
}
if ($img!="")
{
// ouverture et lecture du fichier
$fd =fopen("$file", "r");
$fichier = fread($fd, filesize($file));
fclose($fd);

// instanciation de la classe
$mail = new mime_mail();
// adresse email de reception
$mail->to = $to;
// sujet
$mail->subject = "Annonce mise en ligne";
// corps du message (on utilise un fichier txt)
$mail->body = $corps;
// adresse email de l'expediteur (optionnel)
$mail->from = $from;
// entetes supplementaires (optionnel)
$entetedate = date("D, j M Y H:i:s -0500");
$entetemail .= "X-Mailer: PHP/" . phpversion() . "\n" ;
$entetemail .= "Date: $entetedate";
$mail->headers = "$entetemail";
if ($img != "")
{
// fichier attache (optionnel)
$mail->attach("$fichier", "$file_name");
}
// envoi du message
$mail->send(); //fin de l'envoi par mail
}
}
}
}

Le fichier mime_mail.class.php est :

<?

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

?>

Quand dans mon formulaire je n'ai pas d'image, je ne reçois rien par mail et aucun message d'erreur, quand je mets une image cela me donne ce message d'erreur :
Warning: mail(): Erreur d'appel #1.02 in /var/www/free.fr/6/5/extantpc/annonce/mime_mail.class.php on line 145
Qui correspond à cette ligne :
mail($this->to, $this->subject,"", $mime);

Je mets ceci à la place :
echo "mail($this->to, $this->subject,"", $mime)";

Et cela vérifie le début, lorsque je ne mets pas d'images, il n'utilise pas la fonction mail, lorsque j'envois une image j'ai ça :
"mail(extantpc@free.fr, Annonce mise en ligne,"", From: extantpc@free.fr X-Mailer: PHP/4.3.9RC2 Date: Tue, 2 Nov 2004 15:39:18 -0500 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary = b240001758180d6295cad4776d2d6c936 This is a MIME encoded message. --b240001758180d6295cad4776d2d6c936 Content-Type: text/plain Content-Transfer-Encoding: base64
(un tas de caractéres )
)

Donc a priori il y a deux probléme : Le script rend obligatoire la piéce jointe pour être envoyé, ce qui ne devrait pas être le cas, et lors de l'envoit avec piéce jointe il y a une erreur, qui sait ou elles sont ? merci !!!

2 réponses

o0Leo0o Messages postés 116 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 août 2005
2 nov. 2004 à 16:24
Me semble que la fonction mail est désactivée chez Free :/
0
SteufDu59 Messages postés 18 Date d'inscription jeudi 19 août 2004 Statut Membre Dernière intervention 9 septembre 2006
2 nov. 2004 à 16:49
Non elle fonctionne mais limité à 1000Mails/semaine.
0
Rejoignez-nous