[php] fonction mail()

Résolu/Fermé
mony84 Messages postés 68 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 5 octobre 2010 - 18 juil. 2007 à 07:41
 matin - 12 déc. 2008 à 17:57
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


$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:

4 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
18 juil. 2007 à 09:42
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
0
mony84 Messages postés 68 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 5 octobre 2010 11
18 juil. 2007 à 10:10
merci. Le problème des <> ne s'affiche plus. mais il devient un problème du serveur de messagerie :

<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?
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
18 juil. 2007 à 10:16
Mmmmh...
Ca à l'air de venir du serveur smtp... Tu utilises lequel ?
0
mony84 Messages postés 68 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 5 octobre 2010 11
18 juil. 2007 à 11:32
j'ai essayé d'installer un seveur smtp local sur mon PC (ARgo) mais j'arrive pas à m'en sortir avec.
Le site que je suis en train de développer est pour une entreprise installée en Chine. et je sais rien sur leur fournisseur d'accès.
Qu'est ce que je dois faire?
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
18 juil. 2007 à 11:43
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...
0
mony84 Messages postés 68 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 5 octobre 2010 11
19 juil. 2007 à 07:29
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])]
0
mony84 Messages postés 68 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 5 octobre 2010 11
19 juil. 2007 à 07:50
j'ai commis une faute la dessus c'est smtp.gmail.com que je dois mettre et avec mode authentification j'obtien le message d'erreur :

Failed to connect to smtp.gmail.com:25 [SMTP: Invalid response code received from server (code: -1, response: )]
0
mony84 Messages postés 68 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 5 octobre 2010 11
23 juil. 2007 à 03:38
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";
}

}
0
salut j'ai bessoin de savoir comment je peut avoir l'id ,d'une personne par son email
-1