Page 1 sur 1

Erreur inconnu : Que dois je modifier ?

Posté : 07 août 2008, 15:10
par ed_013
Bonjour,

J'ai récupéré un script permettant de sauvegarder une bdd mysql et de l'envoyer par mail ici. Tout ce passe bien (la sauvegarde et la compression sont bien effectués) mais l'envoi par mail ne semble pas fonctionner. J'ai une erreur de ce type :


Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in c:\program files\easyphp1-8\www\annuaire\sauvegarde\mime_mail.class.php on line 70

Pourriez vous m'eclairer sur la resolution de ce probleme ?

Merci d'avance

Posté : 07 août 2008, 15:22
par guilt92
Apparemment tu travailles en local avec easyphp.

Dans le script que tu as récupérer il y a un appel à une fonction d'envoi de mail, ce qui nécessite un serveur smtp. L'erreur disparaitra probablement lorsque tu mettras ton projet en ligne chez un hébergeur.

Sinon tu peux configurer php (en modifiant php.ini) pour avoir les parametres de ton FAI, fais une recherche du mot "smtp" sur ce forum et tu auras beaucoup d'exemples...

Posté : 07 août 2008, 15:32
par ed_013
Je ne compte pas mettre le projet en ligne, c'est une application destinée à etre utilisé en reseau local.

Je suis allez voir le php.ini, j'ai fais une recherche sur SMTP et j'ai 2 lignes
SMTP = localhost
smtp_port = 25

Sachant que mon FAI est wanadoo, je dois remplacer SMTP = localhost par SMTP = smtp.wanadoo.fr ?

Posté : 07 août 2008, 15:53
par guilt92
fais une recherche du mot "smtp" sur ce forum et tu auras beaucoup d'exemples...
;)

Tu as meme un exemple avec wanadoo : http://www.phpfrance.com/forums/voir_su ... e-smtp.php

Posté : 07 août 2008, 16:06
par ed_013
j'ai donc modifier mon fichier php.ini avec les elements suivants :

Code : Tout sélectionner

[mail function] ; For Win32 only. ;SMTP = localhost SMTP = smtp.wanadoo.fr smtp_port = 25 ; For Win32 only. sendmail_from = [email protected]
Mais l'erreur est toujours la meme :cry:

Pleins de question cons maintenant :

- le fichier php.ini est bien le suivant : C:\Program Files\EasyPHP1-8\php\php.ini ?
il y'a 2 autres fichiers (php.ini-dist et php.ini-recommended) dois je les modifiers aussi ?

Edit :

J'ai modifier ma fonction d'envoi de mail en rajoutant :

ini_set("SMTP","smtp.wanadoo.fr");

la ou l'erreur pointait, ca me supprime warning (bon debut) mais je recois pas la mail

Voila le fichier mime_mail.class.php

Code : Tout sélectionner

<? class mime_mail { var $parts; var $to; var $from; var $headers; var $subject; var $body; function mime_mail() { $this->parts = array(); $this->to = ""; $this->from = ""; $this->subject = ""; $this->body = ""; $this->headers = ""; } function attach($message,$name,$ctype = '') { if(empty($ctype)){ 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 ); } 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"; } 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"; } function send() { $mime = ""; 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"); $mime .= "MIME-Version: 1.0\n".$this->build_multipart(); ini_set("SMTP","smtp.wanadoo.fr"); mail($this->to, $this->subject, "", $mime); } }; ?>

Posté : 07 août 2008, 16:22
par chrislabricole
- le fichier php.ini est bien le suivant : C:\Program Files\EasyPHP1-8\php\php.ini ?
Je ne connais pas bien EasyPHP puisque j'utilise un système installé manuellement...
Mais je pense que le php.ini doit se situer dans C:/WINDOWS/
...

Posté : 07 août 2008, 17:43
par steph29
pour savoir quel fichier php.ini est utilise:

phpinfo();

ligne => Loaded Configuration File
en plus tu pourra voir si ta config smtp est prise en compte :
ligne SMTP et ligne smtp_port
(ne pas oublier de redemarrer easyphp)

il faut bien mettre l'adresse smtp de ton provider.
apres certains provider mettent une authentification sur les envois de mails (regarde dans la config de ta boite mail par exemple)

si il y en une bon courage :twisted: , tu seras oblige de passer autrement que par le php.ini...