Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1250 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  fonction mail() : Recipient address rejected

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fonction mail() : Recipient address rejected

n°1336213
_Roland_
Posté le 31-03-2006 à 11:59:01  profilanswer
 

Salut,
 
Voilà, comment éviter lors de l'envoie d'un formulaire par mail, si l'adresse email est fausse voir apparaitre un "Warning: mail(): SMTP server response: 550 <jjjj.gg@r.tt>: Recipient address rejected: Domain not found in "  en plein milieu de la page  :o  
 :bounce:  
si je mets un or die() ca n'évite pas le pb

mood
Publicité
Posté le 31-03-2006 à 11:59:01  profilanswer
 

n°1336405
nargy
Posté le 31-03-2006 à 15:22:53  profilanswer
 

voir la fonction: error_reporting()

n°1336407
nargy
Posté le 31-03-2006 à 15:24:05  profilanswer
 

le problème est quil trouve pas le serveur r.tt
``.tt`` ça doit pas être un nom domaine

n°1336554
_Roland_
Posté le 31-03-2006 à 18:06:22  profilanswer
 

r.tt est un exemple, c'est pour dire si on met n'importe quoi, le domaine n'est pas reconnue et la fonction mail se plante.
Pour éviter qu'il y ait un msg d'erreur en plein milieur de la page, je peux effectivement utiliser la fonction error_reporting(0).
Mais ou je mets un die et à ce moment là la suite du code s'arrete :/ , ou alors je mets autre chose mais il faudrait trouver un moyen pour l'indiquer à la suite..

n°1336558
nargy
Posté le 31-03-2006 à 18:15:50  profilanswer
 

évite le die()
1°) tu met error_reporting à 0, et sauvegarde l ancien:

  • $errrep=error_reporting(0);

2°) tu envoie le mail et garde le message d erreur:

  • $errmail=mail($to, $sujet, $message);

3°) tu rétabli le rapport d erreur:

  • error_reporting($errrep);

4°) tu traite le cas d erreur

  • if ($errmail) echo "Le mél n'a pu être envoyé, vérifiez le destinaire.";


n°1336560
nargy
Posté le 31-03-2006 à 18:18:49  profilanswer
 

Tu peut faire des choses plus évoluées en utilisant:
set_error_handler()
comme traduire le messages derreure, les sauvegarder, afficher une page spéciale....

n°1336604
_Roland_
Posté le 31-03-2006 à 19:16:09  profilanswer
 

$errmail existe a chaque fois, donc il echo "Le mél.." a chaque fois..
?

n°1336607
_Roland_
Posté le 31-03-2006 à 19:20:16  profilanswer
 

Finalement j'ai fais comme ca :
 
error_reporting(0);
mail($mail_destinataire, $sujet, $message, $bonjour) or $errmail = 1;  
error_reporting(0);  
if ($errmail)  
{
echo "Le mél n'a pu être envoyé, vérifiez le destinaire.";
}
else
{
echo 'mél bien envoyé';
}

n°1336702
nargy
Posté le 31-03-2006 à 21:06:22  profilanswer
 

excuse moi, j ai pas fait attention, c est
 
if (!$errmail) echo "Le mél n'a pu être envoyé, vérifiez le destinaire.";
 
car mail renvoie true si le mail s est bien envoyé, false sinon.
 
Ta solution n est pas sécurisé, à proscrire car il peut arriver que $errmail ne soit pas initialisé.

n°1336900
_Roland_
Posté le 01-04-2006 à 11:55:52  profilanswer
 

Si $errmail n'est pas initialisé, il passe sur le "else" et donc "mèl bien envoyé". Je ne comprends pas ton inquiétude ?
 
Je traduis mon code comme ca:
 
Si le mail() passe bien, $errmail n'est pas initialisé, et donc echo "le mel bien envoyé".
Si le mail() passe pas bien, $errmail est initialisé, et donc echo "le mel n'est pas bien envoyé".
 
Non?


Message édité par _Roland_ le 01-04-2006 à 11:56:14
mood
Publicité
Posté le 01-04-2006 à 11:55:52  profilanswer
 

n°1336942
nargy
Posté le 01-04-2006 à 13:14:23  profilanswer
 

> Non?
oui, mais c est pas sécurisé, selon ta config php un internaute pourrait ajouter:
 http://url?errmail=1
et ça ferai planter ton script...
 
d une manière générale ne jamais utiliser une variable non initialisée, il y a toujours des risques, ce qui en fait une mauvaise habitude.

n°1336972
_Roland_
Posté le 01-04-2006 à 14:44:48  profilanswer
 

d'accord je ferais plus gaffe à l'avenir :jap:
 
(dans ce cas ici, je fais un controle sur la forme de l'adresse email, il ne peut donc pas rentrer juste "errmail=1" )

n°1336980
nargy
Posté le 01-04-2006 à 14:58:53  profilanswer
 

> dans ce cas ici, je fais un controle sur la forme de l'adresse email, il ne peut donc pas rentrer juste "errmail=1"
 
ça ne dépends pas de l entrée de l utilisateur.
explication:
PHP autorise à ce que les paramètre de l url, en GET et POST, soient déclarés comme variables globales. Ça dépends de la configuration en fait. Cette configuration n est en général pas recommandé, mais est très pratique et beaucoup de serveurs l on par défaut.
 
Par exemple quand tu as une page index.php, si appelle la page avec ``index.php?errmail=1``, ça va créer la variable globale errmail initialisée à 1.
 
Ça n est pas la seule raison, il y en a une autre valables aussi avec d autres languages:
c est pour faciliter la relecture.
 
Si ton programme tombe entre les mains d une autre personne, ou que tu veut le corriger au bout d un an, comme tu écrit errmail=1 on peut présupposé que errmail a été initialisé à 0. Celà peut conduire à des bugs, et rends la modification du programme plus délicate: méfiant, tu va chercher où se trouve l initialisation et tu devra lire tout le programme pour te rendre compte qu elle n est jamais initialisée. Dans le doute tu devra peut être même réécrire ce morceau de code, pour être sûr.
 
Au final tout ces inconvénients sont évités en initialisant toujours les variables.

n°1336985
_Roland_
Posté le 01-04-2006 à 15:20:18  profilanswer
 

tu as entièrement raison :jap: je vais le faire en mettant un petit commentaire dans mon code :
// c'est nargy qui m'a dit d'initialiser la variable $errmail alors je le fais ici :
 
;)

n°1337002
nargy
Posté le 01-04-2006 à 15:51:53  profilanswer
 

:lol:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  fonction mail() : Recipient address rejected

 

Sujets relatifs
fonction délai pour Pythonfonction preg_replace
mail to[resolu]Fonction sqrt non reconnue...
Restriction dll envoi mailContrôle adresse mail
Envoi mail, depuis le Web, à une heure donnéefonction PHP images
Génération d'un mail avec pièce jointe en PHPproblème avec la fonction Range
Plus de sujets relatifs à : fonction mail() : Recipient address rejected


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR