fonction mail

Eléphanteau du PHP | 45 Messages

04 janv. 2012, 20:32

Ca devrait pourtant marcher, mais je ne reçois jamais le mail.
Il s'agit d'un code pour les internautes qui auraient oublié leur mdp de connexion. J'ai donc fait un formulaire simple: entrez votre email, qui après validation, cherche le mdp + login dans la BD et envoie les données par mail au mail récupéré dans le formulaire.
Je récupère bien tout, j'ai tout bien fait (je crois), mais ça n'envoie pas le mail. Quelqu'un aurait une idée ?

Par avance, merci.

Ci dessous mon code :
<?
$email_personne = $_POST['email_saisi'];

$rech_personne = "SELECT MOT_DE_PASSE_PERSONNE, LOGIN_PERSONNE
FROM PERSONNE WHERE EMAIL_PERSONNE = '$email_personne'";
$res_rech_personne = mysql_query( $rech_personne );
$nb_personne = mysql_num_rows( $res_rech_personne );

if ( $nb_personne > 0 ){
while( $row_recherche = mysql_fetch_row( $res_rech_personne )) {

$login_personne = $row_recherche[0];
$mdp_personne = $row_recherche[1];
$message .= "Recuperation de vos codes de connexion : identifiant : ".$login_personne." / mot de passe : ".$mdp_personne;

$headers ='From: [email protected]'."\n";
$headers .= 'To: '.$email_personne."\n";
$headers .='Reply-To: [email protected]'."\n";
$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
// echo $headers;
mail($email_personne, 'Vos codes de connexion', $message, $headers);

echo '<h3>Vos nouveaux codes de connexion vous ont &eacute;t&eacute; envoy&eacute; &agrave; l\'adresse '.$email_personne.'. V&eacute;rifiez votre boite email. Cela peut prendre quelques minutes. Si vous ne le recevez pas, v&eacute;rifiez votre boite de spam. A bient&ocirc;t sur pagescomediens.com.</h3>';


}
}


else{
$erreur = "Adresse email invalide.";

}
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

04 janv. 2012, 23:18

Salut,

À tu vérifier les valeurs que tu récupère dans la requête ?

À tu verifié dans le dossier spam ?

Essai avec une classe comme phpmailer si ça passe.


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 209 Messages

05 janv. 2012, 10:59

Salut,

Est-ce que ta sortie d'erreur est activée ? Sinon ajoute error_reporting(E_ALL | E_STRICT); en haut de ton script le temps de corriger.

Sinon tu as une erreur ligne 14.
$message .= "..." alors que ta variable n'est pas initialisée auparavant. Tu dois soit faire $message = "...", soit initialiser $message = "" et inclure ton texte derrière.

Essaye d'appeler ta fonction mail de manière toute simple pour commencer et de voir si tu reçois le mail.
mail($email, $subject, $message);

Eléphanteau du PHP | 45 Messages

05 janv. 2012, 16:33

Merci Shenryu pour ton message et l'erreur relevée !
J'ai fait comme t'as dit : corrigé l'erreur (d'ailleurs c'est bizarre que je n'ai pas eu de message d'erreur, appelé la fonction mail de manière toute simple et non ça ne marche toujours pas #-o
J'ai ajouté une sortie error_reporting(E_ALL | E_STRICT); mais ça ne me donne aucune info de plus, sinon que visiblement ma variable de session n'était pas utile. Soit, je l'ai retiré, et effectivement, ça ne change rien à l'exécution du scripte.

Moogle, oui, j'ai vérifié toutes les valeurs, et tout est ok de ce côté là. Evidemment, j'ai jeté un oeil dans mon dossier spam et non, rien non plus :(

J'aimerais ne pas avoir à faire appel à phpmailer, dans la mesure où j'utilise la fonction mail dans d'autres scripte et tout fonctionne normalement. Je suis jamais fan d'utiliser des classe quand on peut faire sans...

Vous auriez d'autres idées ?

ViPHP
ViPHP | 2577 Messages

05 janv. 2012, 16:53

Tu peux tester le retour de la fonction mail :
If (mail(...)
{
   echo 'mail ok';
} 
else 
{
   echo 'mail ko';
} 

Eléphant du PHP | 209 Messages

05 janv. 2012, 16:55

Tu n'as pas d'autres erreurs ? Rien dans la log de php ou d'apache ?

Eléphanteau du PHP | 45 Messages

05 janv. 2012, 17:09

Tu peux tester le retour de la fonction mail :
If (mail(...)
{
   echo 'mail ok';
} 
else 
{
   echo 'mail ko';
} 

Bonne idée, j'ai essayé. Alors, la bonne nouvelle, c'est qu'il me dit "Mail ok" ! Bon, je reçois toujours pas le mail, mais c'est ce qu'il me dit !
Ca pourrait vouloir dire quoi ?

@Shenryu :
Je n'ai a priori aucune autre erreur... Ou alors bien cachée !
Concernant le log de php ou d'apache, par contre, pardon de mon ignorance, comment je vérifie ?