Confirmation d'inscription par mail PHP

Résolu/Fermé
shoub-tcy Messages postés 169 Date d'inscription mardi 6 mars 2012 Statut Membre Dernière intervention 23 mai 2012 - 11 mars 2012 à 20:41
shoub-tcy Messages postés 169 Date d'inscription mardi 6 mars 2012 Statut Membre Dernière intervention 23 mai 2012 - 12 mars 2012 à 02:12
Bonjour,

J'ai créé un formulaire d'inscription qui ammène à une page de traitement des informations rentrées par le visiteur, si ces informations sont incorrectes, un message apparait et marque l'erreur, ou si tout est correcte, le visiteur va recevoir un lien d'activation sur son mail pour qu'il puisse confirmer son inscription. Mon soucis est que le visiteur ne reçoit pas mon mail de confirmation, donc je ne vois pas ou se trouve la ou les erreurs. Voici mon code à partir du moment ou il n'y a pas d'erreur de la part du visiteur :

else
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=sitesql', 'root', '', $pdo_options);

$req = $bdd->prepare('INSERT INTO formulaire(nom, prénom, pseudo, e_mail, password, question_secrète, réponse_secrète, adresse, cp, ville, région, tel, date_naij, date_naim, date_naia) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');

$req->execute(array($_POST['nom'], $_POST['prénom'], $_POST['pseudo'], $_POST['e_mail'], $_POST['password'], $_POST['question_secrète'], $_POST['réponse_secrète'], $_POST['adresse'], $_POST['cp'], $_POST['ville'], $_POST['région'], $_POST['tel'], $_POST['date_naij'], $_POST['date_naim'], $_POST['date_naia']));

// Récupération des variables nécessaires au mail de confirmation
$e_mail = $_POST['e_mail'];
$pseudo = $_POST['pseudo'];

// Génération aléatoire d'une clé
$cle = md5(microtime(TRUE)*100000);


// Insertion de la clé dans la base de données
$stmt = $bdd->prepare("UPDATE formulaire SET cle=:cle WHERE pseudo like :pseudo");
$stmt->bindParam(':cle', $cle);
$stmt->bindParam(':pseudo', $pseudo);
$stmt->execute();


// Préparation du mail contenant le lien d'activation
$destinataire = $e_mail;
$sujet = "Activer votre compte" ;
$entete = "From: inscription@monsite.com" ;

// Le lien d'activation est composé du pseudo(pseudo) et de la clé(cle)
$message = 'Bienvenue sur Intelli-vente,

Pour activer votre compte, veuillez cliquer sur le lien ci dessous
ou copier/coller dans votre navigateur internet.

http://127.0.0.1/Site/Page2/activation.php?pseudo='.urlencode($pseudo).'&cle='.urlencode($cle).'


---------------
Ceci est un mail automatique, Merci de ne pas y répondre.';


mail($destinataire, $sujet, $message, $entete) ; // Envoi du mail

header('Location: ../page1.php');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>

La clé est effectivement inséré comme il le faut dans la base de donnée, donc je pense que l'erreur intervient juste après...
A voir également:

3 réponses

shoub-tcy Messages postés 169 Date d'inscription mardi 6 mars 2012 Statut Membre Dernière intervention 23 mai 2012 2
12 mars 2012 à 02:12
C'est bon c'est résolu, j'ai enfin trouvé.
Il fallait modifier la ligne "sendmail_from = you@yourdomain" de (php.ini) en la remplaçant par mon adresse e-mail "sendmail_from = monadresse@email.fr".
Et la tout fonctionne.
Merci quand même pour votre aide.
2
l3ajib Messages postés 176 Date d'inscription mercredi 19 août 2009 Statut Membre Dernière intervention 12 mai 2012 86
Modifié par l3ajib le 11/03/2012 à 21:12
Une ligne dans le message que tu veux envoyé ne doit pas dépasser les 70 caractères, donc tu doit utilisé un saut de ligne:

$message = wordwrap($message, 70);


Juste avant:
mail($destinataire, $sujet, $message, $entete) ; // Envoi du mail 



Une autre chose concernant l'entête, ça doit être comme ça:

$entete = 'From: inscription@monsite.com' . "\r\n" .
    'Reply-To: inscription@monsite.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();
0
shoub-tcy Messages postés 169 Date d'inscription mardi 6 mars 2012 Statut Membre Dernière intervention 23 mai 2012 2
11 mars 2012 à 21:28
Merci pour ta réponse l3ajib,

J'ai suivi tout tes conseils mais aucun message dans la boite de réception.
0
l3ajib Messages postés 176 Date d'inscription mercredi 19 août 2009 Statut Membre Dernière intervention 12 mai 2012 86
11 mars 2012 à 21:34
essai de récupérer la valeur de retour de la fonction mail pour voire qu'est ce que ça va donner:

$ok=mail($destinataire, $sujet, $message, $entete); 
echo $ok;
0
shoub-tcy Messages postés 169 Date d'inscription mardi 6 mars 2012 Statut Membre Dernière intervention 23 mai 2012 2
11 mars 2012 à 21:40
Je dois remplacé mail($destinataire, $sujet, $message, $entete) ; par le code que tu m'a donné?
0
shoub-tcy Messages postés 169 Date d'inscription mardi 6 mars 2012 Statut Membre Dernière intervention 23 mai 2012 2
11 mars 2012 à 21:48
si c'est ça, toujours pas de mail dans la boite de réception.
0
l3ajib Messages postés 176 Date d'inscription mercredi 19 août 2009 Statut Membre Dernière intervention 12 mai 2012 86
11 mars 2012 à 21:50
et sur la page qu'est ce que tu as comme message ? (contenu de $ok)
0
graffx Messages postés 6506 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 24 mars 2019 1 973
11 mars 2012 à 22:00
La fonction mail est desactivée sur ton serveur, tu es chez qui?
0
shoub-tcy Messages postés 169 Date d'inscription mardi 6 mars 2012 Statut Membre Dernière intervention 23 mai 2012 2
11 mars 2012 à 22:03
Je suis sur le serveur WAMP et j'utilise Notepad++. Il y a une solution pour l'activé?
0