Bonjour,

Je souhaite utiliser Maildev mais je n'arrive pas à recevoir les mails ?

je l'ai donc installé avec la commande npm install -g maildev@1.0.0-rc2

et j'ai pour finir changer mon fichier php.ini

SMTP = localhost
smtp_port = 1025

Lorsque que je me rend sur 127.0.0.1:1080, jarrive bien sur la page mais aucun mail n'apparait jamais ! Quelqu'un pourrait-il me renseigner ? Merci d'avance !

8 réponses


SimonDevelop
Réponse acceptée

Je ne pense pas que ça soit ça qui bloque. Si tu essaye avec swiftmailer pour voir si il te crash pas une erreur ?

Lartak
Réponse acceptée

Bonjour.
Je le trouve bien trop léger ton envoi de mail, aucun entête concernant l'encodage du message par exemple.
Et puis vu ton code, tu ne peux même pas savoir si le mail a bien été envoyé, au cas ou tu ne le sache pas, le retour de la fonction mail est de type bool, tu pourrais donc par exemple faire une condition sur elle pour savoir si le mail a été envoyé ou non, car là tu parles de Maildev, mais je ne vois pas en quoi il pourrait être fautif, alors que si ça se trouve ton mail n'a même pas été envoyé, par exemple :

$send = mail($_POST['email'], "Confirmation de votre compte", "Afin de valider votre compte, merci de clique sur ce lien \n\n http://localhost/Gafikart/espace_membre_php_brut/confirm.php?id=$user_id & token = $token");
if ($send) { // Le mail a bien été envoyé
    header("location:login.php");
    exit();
}
// erreur sur l'envoi du mail ...

Et juste pour information, tu devrais corriger l'url dans le message de ton mail, elle a des espaces sur la fin.

Bonjour, tu envois ton mail comment ? via la fonction mail() de php ou bien une librairie comme swiftmailer ?

soltina
Auteur

J'utilise la fonction mail de php

 require_once "inc/function.php";

    if(!empty($_POST)){

        $errors = array(); 

        require_once "inc/db.php"; 

        if(empty($_POST['username']) || !preg_match('/^[a-zA-Z0-9]+$/', $_POST['username'])){
            $errors['username'] = "Votre pseudo n'est pas pas valide! (alphanumerique) "; 

        }else{

            $req = $pdo->prepare("SELECT id FROM users WHERE username =? "); 
            $req->execute([$_POST['username']]); 
            $user = $req->fetch(); 

            if($user){
            $errors["username"]= "Ce pseudo est déjà pris"; 

            }

            $req =$pdo->prepare("SELECT id FROM users WHERE email=?"); 
            $req->execute([$_POST["email"]]); 
            $email=$req->fetch(); 

            if($email){
                $errors["email"] = "Cet email est déjà utilisé"; 
            }

        }

        if(empty($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
            $errors['email'] = "Votre email n'est pas valide!";

        }

        if(empty($_POST['password']) || $_POST['password'] != $_POST['password_confirm']){
            $errors['password']="Vous devez entrer un mot de passe valide!";
        }

        if(empty($errors)){

            $req= $pdo->prepare("INSERT INTO users SET username =?, password=?, email=?, confirmation_token=? "); 

            $password = password_hash($_POST['password'],PASSWORD_BCRYPT);

            $token = str_random(60);            

            $req->execute([$_POST['username'], $password, $_POST['email'], $token]);

            $user_id = $pdo->lastInsertId(); 

            mail($_POST['email'], "Confirmation de votre compte", "Afin de valider votre compte, merci de clique sur ce lien \n\n http://localhost/Gafikart/espace_membre_php_brut/confirm.php?id=$user_id & token = $token");
            header("location:login.php"); 
            exit(); 

        }
         debug($errors); 

    }

?>

Vérifie que ton php reprend bien ta modif dans php.ini via la fonction phpinfo.
Sinon je ne vois pas pourquoi celà ne fonctionnerai pas, as-tu un message d'érreur en retour quelque part ?

soltina
Auteur

Non je n'ai aucune erreur et le SMTP et smtp_port sont correctes sur la page phpinfo. Toujours dans cette page, je vois aussi sendmail_from( avec l'adresse admin@wampserver.invalid) et sendmail_path vide.

soltina
Auteur

En essayant d'installer swiftmailer, je me suis rendue compte que la version que j'utilisée en php était trop ancienne !
Je suis passée à l'extension 7.0 est maildev fonctionne enfin ! En tout cas merci à vous de m'avoir aiguillé :)

soltina
Auteur

En faite, je suis partie du principe que si j'arrivais bien sur la page login.php, c'est que mon code fonctionnait.
Effectivement, la condition est plus qu'appropriée !