Confirmation d'inscription par mail PHP

Résolu
shoub-tcy Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   -  
shoub-tcy Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   2
 
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 178 Date d'inscription   Statut Membre Dernière intervention   87
 
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   Statut Membre Dernière intervention   2
 
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 178 Date d'inscription   Statut Membre Dernière intervention   87
 
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   Statut Membre Dernière intervention   2
 
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   Statut Membre Dernière intervention   2
 
si c'est ça, toujours pas de mail dans la boite de réception.
0
l3ajib Messages postés 178 Date d'inscription   Statut Membre Dernière intervention   87
 
et sur la page qu'est ce que tu as comme message ? (contenu de $ok)
0
graffx Messages postés 6506 Date d'inscription   Statut Contributeur Dernière intervention   1 975
 
La fonction mail est desactivée sur ton serveur, tu es chez qui?
0
shoub-tcy Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   2
 
Je suis sur le serveur WAMP et j'utilise Notepad++. Il y a une solution pour l'activé?
0