[php] fonction mail()
Résolu
mony84
Messages postés
68
Date d'inscription
Statut
Membre
Dernière intervention
-
matin -
matin -
Je veux utiliser la fonction mail() pour envoyer le login et le password, en cas d'oubli
Voici la partie du code concernant cette fonction que j'ai écrit
pour les variables Flogin et Fpassword, je les ai récupérées à l'aide d'une requete sql.
J'oubtient le message d'erreur suivant:
Warning: mail() [function.mail]: SMTP server response: 501 Syntax Error: Unbalanced angle brackets
je n'arrive pas à voir les parenthèses qui manquent ou au contraire qui sont inutiles.
merci
Voici la partie du code concernant cette fonction que j'ai écrit
$email=$_POST['email'];//obtenu à partir du formulaire $from_email = 'contact@yahoo.fr'; $entetedate = date("D, j M Y H:i:s "); $entetemail = 'From: $from_email\n'; // Adresse expéditeur $entetemail .= 'X-Mailer: PHP/' . phpversion() .'\n' ; $entetemail .= 'Date: $entetedate'; if (mail($email, 'your login and password for www.toto.com', 'your login: $Flogin \n Your password : $Fpassword \n', $entetemail)// l'erreur soulignée concerne cette ligne ) { print("<table > <tr><td bgcolor='#B22222'><font color='#FFFFFF'> An email is sent to this adress : ".$email."</font> </td></tr> </table>"); } else { print("<table > <tr><td bgcolor='#B22222'><font color='#FFFFFF'> This service is not available now. Please try later.</font> </td></tr> </table>"); }
pour les variables Flogin et Fpassword, je les ai récupérées à l'aide d'une requete sql.
J'oubtient le message d'erreur suivant:
Warning: mail() [function.mail]: SMTP server response: 501 Syntax Error: Unbalanced angle brackets
je n'arrive pas à voir les parenthèses qui manquent ou au contraire qui sont inutiles.
merci
A voir également:
- [php] fonction mail()
- Fonction si et - Guide
- Publipostage mail - Accueil - Word
- Windows live mail - Télécharger - Mail
- Créer une adresse mail hotmail - Guide
- Comment télécharger un mail - Guide
4 réponses
Bonjour,
Je n'ai pas la solution à ton problème, mais déjà :
- Angle brackets, ce ne sont pas des parenthèses, mais des < >
- Tu mets des noms de variables $variable dans des chaines de caractères délimitées par des ' ' : elles ne seront pas interprétées ! Il faut soit mettre des " " ("truc $variable bidule"), soit fermer la chaîne et concaténer ('truc '.$variable.' bidule', que je trouve plus propre personnellement).
Peut-être que modifier cela suffira à résoudre ton problème (notamment à cause de tes en-têtes), mais je n'en suis pas sûr.
Xavier
Je n'ai pas la solution à ton problème, mais déjà :
- Angle brackets, ce ne sont pas des parenthèses, mais des < >
- Tu mets des noms de variables $variable dans des chaines de caractères délimitées par des ' ' : elles ne seront pas interprétées ! Il faut soit mettre des " " ("truc $variable bidule"), soit fermer la chaîne et concaténer ('truc '.$variable.' bidule', que je trouve plus propre personnellement).
Peut-être que modifier cela suffira à résoudre ton problème (notamment à cause de tes en-têtes), mais je n'en suis pas sûr.
Xavier
Mmmmh...
Ca à l'air de venir du serveur smtp... Tu utilises lequel ?
Ca à l'air de venir du serveur smtp... Tu utilises lequel ?
Dans ton php.ini, tu as mis quoi au niveau smtp ? Un site fourni par ton client ? Si oui, je pense qu'il faut leur remonter l'erreur pour qu'ils contactent leur fournisseur d'accès...
au niveau de php.ini, j'ai essayé avec smtp.google.com et le port 25. et voila le message d'erreur :
mail() [function.mail]: SMTP server response: 550 5.7.1 <send_to@yahoo.fr>... Relaying denied. IP name lookup failed [210.22.134.2]
pour l'adresse "$from_email ", j'ai mis mon adresse gmail.
avec smtp.yahoo.fr et "$from_email " mon adresse yahoo.fr, j'obtient le message suivant :
mail() [function.mail]: Failed to connect to mailserver at "smtp.yahoo.fr" port 25, verify your "SMTP" and "smtp_port" setting in php.ini
J'ai essayé avec le package Mail de PEAR:
Avec le serveur smtp google: mode authentification: pas de message d’erreur
et sans Authentification :
Failed to add recipient: send_to@yahoo.fr [SMTP: Invalid response code received from server (code: 550, response: 5.7.1 ... Relaying denied. IP name lookup failed [210.22.134.2])]
mail() [function.mail]: SMTP server response: 550 5.7.1 <send_to@yahoo.fr>... Relaying denied. IP name lookup failed [210.22.134.2]
pour l'adresse "$from_email ", j'ai mis mon adresse gmail.
avec smtp.yahoo.fr et "$from_email " mon adresse yahoo.fr, j'obtient le message suivant :
mail() [function.mail]: Failed to connect to mailserver at "smtp.yahoo.fr" port 25, verify your "SMTP" and "smtp_port" setting in php.ini
J'ai essayé avec le package Mail de PEAR:
Avec le serveur smtp google: mode authentification: pas de message d’erreur
et sans Authentification :
Failed to add recipient: send_to@yahoo.fr [SMTP: Invalid response code received from server (code: 550, response: 5.7.1 ... Relaying denied. IP name lookup failed [210.22.134.2])]
J'ai utilisé la package Mail de PEAR et je me suis connectée à un serveur qui s'appelle smtp.c2.corpease.net. La connexion nécessite une authentifiacation avec le login et le mot de passe. Voici le bout de code correspondant:
include('init-ado.php'); include("Mail-1.1.14\Mail.php"); $connection=ADONewConnection('mysql'); $connection->Connect(dbnode, dbuser,dbpassword, dbinstance); //$connection->debug=true; $email=$_POST['email']; $query=" SELECT * from clients where Email='$email'"; $result=$connection->Execute($query); if ($result==false) die ("failed"); $nombre = $result->RecordCount(); if ($nombre==0){ print("<table > <tr><td bgcolor='#B22222'><font color='#FFFFFF'>This Email doesn't exist.</font> </td></tr> </table>"); } else { $Flogin=$result->Fields('login'); $Fpassword=$result->Fields('password'); $recipients = $email; $headers["From"] = "info@toto.com"; $headers["To"] = $email; $headers["Subject"] = "Your password for toto.com"; $body = "To get connected to http://wwww.toto.com : \n\nYour login : ".$Flogin."\n\nYour password : ".$Fpassword."\n"; $params["host"] = "smtp.c2.corpease.net"; $params["port"] = "25"; $params["auth"] = true; $params["username"] = "info@toto.com"; $params["password"] = "....."; // Create the mail object using the Mail::factory method $mail_object =& Mail::factory("smtp", $params); $send_result = $mail_object->send($recipients,$headers,$body); if (PEAR::isError($send_result)) { print "<table > <tr><td bgcolor='#B22222'><font color='#FFFFFF'> This service is not available now. Please try later.</font>//cad le message n'est pas envoyé </td></tr> </table> "; die($send_result->getMessage()); } else { print "<table > <tr><td bgcolor='#B22222'><font color='#FFFFFF'> An email is sent to this adress : ".$email."</font> </td></tr> </table"; } }
<gras>SMTP server response: 551 User not local . We don't relay on line ... (la même que précédemment)<gras>
Je suis sur windows et j'utilise EasyPhp. Je crois que j'ai pas bien paramétré le fichier php.ini
Est ce que vous pouvez me donner la bonne méthode pour le faire?