Je suis en train de (tenter de) coder une newsletter pour mon site.
Pour s'inscrire, j'ai installé un formulaire sur une page où l'on entre son adresse mail.
L'action envoi à la page suivante (post.php) où :
* une clef d'activation est générée,
* l'adresse mail est intégrée dans une base de donné
* un mail de confirmation est envoyé à l'adresse entrée par l'utilisateur afin qu'il puisse valider (via un lien).
Voici le code de ma page post :
<?php
$clef = md5(microtime(TRUE)*100000);
$email = $_POST['email'];
try
{
$bdd = new PDO('mysql:host=localhost;dbname=monsite', 'login', 'password');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$req = $bdd->prepare('INSERT INTO mailnews (email, clef) VALUES(?, ?)');
$req->execute(array($_POST['email'], $_POST['clef']));
$to = $email;
$subject = 'Newsletter de monsite';
$message = "<p>Bonjour,<br>
Pour confirmer votre inscription à la newsletter de monsite, merci de cliquer sur le lien ci-dessous ou de le copier/coller dans votre navigateur :<br>
<a>http://monsite.com/news/activation.php?log='.urlencode($email).'&clef='.urlencode($clef).'</a></p>
<br><p>Ceci est un message automatique, merci de ne pas y répondre.</p>";
$headers = "From: \"monsite News\"<[email protected]>"."\r\n".
"Reply-To: [email protected]"."\r\n".
"Content-Type: text/html; charset=\"iso-8859-1\"";
if(mail($to,$subject,$message,$headers))
{
header('Location: index#up');
}
else
{
echo "Une erreur c'est produite lors de l'inscription de votre adresse, merci de <a href=\"index\">réessayer.</a>";
}
?>
J'ai tenté plusieurs modifications du code mais rien n'y fait : à chaque fois que je tente de m'inscrire, je reçois le message d'erreur.Quelqu'un aurait-il une idée du ou des problèmes empêchant ce code de fonctionner correctement ?
Merci !