Envoi mail

Par Deku, il y a 6 ans


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

Deku, il y a 6 ans

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.

Eric Lecathelinais, il y a 6 ans

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é ??

Eric Lecathelinais, il y a 6 ans

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, il y a 6 ans

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.

Carouge10, il y a 6 ans

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, il y a 6 ans

d'accord je vais revoir headers

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

Deku, il y a 6 ans

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 .

Develop'On, il y a 6 ans

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