Rechercher : dans
Par :

[php] fonction mail()

Dernière réponse le 12 déc 2008 à 17:57:34 mony84, le 18 jui 2007 à 07:41:13 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [php] fonction mail() » dans :
[PHP] Fonction mail() Voir La fonction mail() est bloquée chez certains des hébergeurs gratuits pour des raisons de sécurité (afin d'éviter le spam notamment), l'adresse ip de la machine qui a demandé le script sera alors indiquée dans le header 'X-MM-Mail-From-IP'. renseignez...
PHP - Mail et fonctions réseau VoirPHP étant un langage consacré au Web, il possède bien évidemment des fonctions lui permettant de communiquer avec le "monde extérieur" à l'aide de fonctions standards. Le service le plus utilisé sur Internet étant la messagerie électronique, il est...

1

Reivax962, le 18 jui 2007 à 09:42:30

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

Répondre à Reivax962

2

mony84, le 18 jui 2007 à 10:10:14

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?

Répondre à mony84

3

Reivax962, le 18 jui 2007 à 10:16:04

Mmmmh...
Ca à l'air de venir du serveur smtp... Tu utilises lequel ?

Répondre à Reivax962

4

mony84, le 18 jui 2007 à 11:32:33

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?

Répondre à mony84

5

Reivax962, le 18 jui 2007 à 11:43:34

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

Répondre à Reivax962

6

mony84, le 19 jui 2007 à 07:29:22

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])]

Répondre à mony84

7

mony84, le 19 jui 2007 à 07:50:46

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: )]

Répondre à mony84

8

mony84, le 23 jui 2007 à 03:38:34

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";
}

}

Répondre à mony84

9

 matin, le 12 déc 2008 à 17:57:34

Salut j'ai bessoin de savoir comment je peut avoir l'id ,d'une personne par son email

Répondre à matin