Erreur inconnu : Que dois je modifier ?

Eléphanteau du PHP | 25 Messages

07 août 2008, 15:10

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

Mammouth du PHP | 1353 Messages

07 août 2008, 15:22

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...
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphanteau du PHP | 25 Messages

07 août 2008, 15:32

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 ?

Mammouth du PHP | 1353 Messages

07 août 2008, 15:53

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
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphanteau du PHP | 25 Messages

07 août 2008, 16:06

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); } }; ?>

Mammouth du PHP | 959 Messages

07 août 2008, 16:22

- 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/
...

Eléphant du PHP | 175 Messages

07 août 2008, 17:43

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...