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 !
Je ne pense pas que ça soit ça qui bloque. Si tu essaye avec swiftmailer pour voir si il te crash pas une erreur ?
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 ?
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 ?
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.
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é :)
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 !