Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

if(isset($_POST['mail']) ){

     $email = $_POST['mail'];

    $enn = $bdd ->prepare('SELECT mail,pseudo FROM inscr WHERE mail = "'.$email.'" ');
    $enn->execute();
    $en = $enn-> fetch();
    $adressedestinataire=$en['mail'];
    $inu =  $en['pseudo'];
$passage_ligne = "\n";

    $from = "Monsite@noreply.net";

    $to = "$adressedestinataire";

    $subject = "Monsite identifiants perdus";

    $message = "Vous avez fait une demande pour retrouver vos identifiants :$passage_ligne$passage_ligne$passage_ligne 
    Votre Pseudo $inu $passage_ligne $passage_ligne $passage_ligne
    Suivez ce lien  lelien.php pour réinitialiser votre mot de passe . $passage_ligne$passage_ligne Vous pouvez vous connecter à votre espace membres à partir de la page suivante : lien.php $passage_ligne$passage_ligne Merci et à très bientôt.$passage_ligne$passage_ligne$passage_ligne ( Si vous n'êtes pas à l'origine de cette demande; ignorez ce mail. )";

    $headers = "From:" . $from;

    mail($to,$subject,$message, $headers);

    echo '<span style="color:blue;" ><b>Un mail vous a été envoyé !</br> Pensez à regarder vos spams.</b></span> ';
}

Ai-je commis une erreur ? car je ne reçois aucun mail bien que aucun message d'erreur n'apparaisse.

8 réponses


Salut,
Plusieurs trucs :
Vérifier que POST['mail'] est bien défini (sinon ton code se s'exécutera pas)
Afficher le contenu de $adressedestinataire ... voir si ta requête se passe bien et que tu as bien une valeur

Pour le reste, cela me semble bon donc si ces 2 points sont ok alors on creusera plus !!

Deku
Auteur

je vais tester le contenu de $adressedestinataire :) pour POST['mail'] oui il est défini sinon le echo n'apparaitrait pas

Edit: j'ai testé et la variable contient bien le mail à envoyer.

Tu n'avais pas précisé que ton echo s'affiché ;)
et ta fonction mail() fonctionne ??? si tu fais mail("adresse@domaine.com", "sujet", "message"), ton mail est envoyé ??

Deku
Auteur

comment je fais pour savoir ça ?

Edit:

 if( mail($to,$subject,$message, $headers)){
echo "le mail à été envoyé";
}else{
echo "le mail n'a pas été envoyé";
}

    echo '<span style="color:blue;" ><b>Un mail vous a été envoyé !</br> Pensez à regarder vos spams.</b></span> ';
}

Affiche :le mail à été envoyéUn mail vous a été envoyé !
Pensez à regarder vos spams.

Bonjour,
Pense à bien préparer ta requêtes aussi car la, bonjour les injections sql (sécurité)
De plus, il bien de lire la doc php sur le "headers" dans la fonction mail car ici, elle est incomplète.

Si local : as-tu renseigner le smtp dans le fichier php.ini ?
Si en ligne : que dises les logs ?

Deku
Auteur

d'accord je vais revoir headers

je test en local et j'ai renseigné le smtp dans le fichier php.ini

Deku
Auteur

j'ai rajouté :

$encoding = "utf-8";

    $header = "Content-type: text/html; charset=".$encoding." \r\n";
    $header .="From:" . $from;
    $header .= "MIME-Version: 1.0 \r\n";
    $header .= "Content-Transfer-Encoding: 8bit \r\n";

Pour les deux derniers header J'avoue ne pas trop comprendre ce que ça veut dire ni ce que ça apporte mais bon .

Bonjour,
Avez-vous commencer par configurer votre ordinateur pour envoyer des mails ?