Bonjour,
Je n'ai encore jamais réussi à envoyer un email avec PHPMailer, je patauge...
sur le site de mon FAI (nautile), dans la partie SMTP il y a ça :
Connexion sécurisée TLS sur submission.nautile.nc port 587 (recommandé)
J'aimerai envoyer un email avec PHPMailer (en utilisant composer).
mon composer.json :
{
"name": "test",
"autoload": {
"psr-4": {
"App\\": "App/"
}
},
"require": {
"phpmailer/phpmailer": "^5.2"
}
}
Je n'ai modifié qu'un seul fichier de configuration : "php.ini" :
...
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP=submission.nautile.nc
; http://php.net/smtp-port
smtp_port=587
...
À la racine de mon site j'ai un dossier "vendor" :
...\monsite\vendor\phpmailer\phpmailer\PHPMailerAutoload.php
(avec tous les autres fichiers correspondant à "PHPmailer")
mon code :
require ROOT . 'vendor/phpmailer/phpmailer/PHPMailerAutoload.php';
$mail = new \PHPMailer; // est-ce qu'il faut bien mettre l'anti-slash devant ou pas ?
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->SMTPDebug = 1;
$mail->Host = 'submission.nautile.nc';
$mail->Username = 'monemail@gmail.com'; // j'ai bien mis ma vraie email pour les tests
$mail->Password = 'xxxxxxxxxxxx'; // j'ai mis le mot de passe que j'utilise pour me connecter à ma boite gmail
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->CharSet = "utf-8";
$mail->SetFrom('monemail@gmail.com', 'Mailer');
$mail->AddAddress('user@gmail.com'); // ici l'adresse du nouvel utilisateur qui créer son nouveau compte sur mon site
$mail->addReplyTo('monemail@gmail.com', 'Information');
$mail->isHTML(true);
$mail->Subject = 'Activez votre compte';
$mail->Body = 'HTML message test <b>en gras !</b>';
$mail->AltBody = 'plaintext message test';
echo 'DEBUG - TRY SEND EMAIL<br>';
if(!$mail->send())
{
$this->User->delete($email); // j'avais déjà ajouté l'utilisateur en BDD, mais comme l'email n'est pas passé je le resupprime...
echo 'Mailer Error: ' . $mail->ErrorInfo;
}
else
{
echo 'Message has been sent';
}
die();
### Ce que j'obtiens
DEBUG - TRY SEND EMAIL
2016-12-05 11:03:58 CLIENT -> SERVER: EHLO localhost
2016-12-05 11:03:58 CLIENT -> SERVER: STARTTLS
2016-12-05 11:03:59 CLIENT -> SERVER: EHLO localhost
2016-12-05 11:03:59 CLIENT -> SERVER: AUTH LOGIN
2016-12-05 11:03:59 CLIENT -> SERVER: anVsaWVubWFyeW5jQGdtYWlsLmNvbQ==
2016-12-05 11:03:59 CLIENT -> SERVER: OWVlN3J0bTQ=
2016-12-05 11:04:01 SMTP ERROR: Password command failed: 535 5.7.8 Error: authentication failed: UGFzc3dvcmQ6
2016-12-05 11:04:01 SMTP Error: Could not authenticate.
2016-12-05 11:04:01 CLIENT -> SERVER: QUIT
2016-12-05 11:04:01 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Je suis mauvais avec composer aussi, peut-être que j'ai mal/pas fais quelquechose ?
Ou autre chose...?
Je suis perdu ^^
PS : Lors des tests, je suis certain d'avoir bien mis ma bonne adresse email (répétée les 3 fois où il faut la répéter dans le code que j'ai montré), et mon bon mot de passe associé.
Merci pour votre aide.
Ah !
J'ai reçu un email (je n'avais pas remarqué...) :
----------------------------------------------------------------
Bonjour Machin,
Nous venons de bloquer une tentative de connexion à votre compte Google monemail@gmail.com depuis une application présentant un risque pour ce dernier.
...
Reconnaissez-vous cette activité ?
Si vous n'avez pas récemment reçu un message d'erreur en essayant d'accéder à un service Google (tel que Gmail) à partir d'une application autre que Google, il est possible qu'une autre personne ait accès à votre mot de passe.
...
Êtes-vous la personne qui a essayé de se connecter ?
Nous continuerons de bloquer les tentatives de connexion à votre compte provenant de l'application que vous utilisez, car elle présente des problèmes de sécurité ou est obsolète. Vous pouvez continuer à utiliser cette application en accordant l'accès aux applications moins sécurisées, mais cela peut rendre votre compte vulnérable.
----------------------------------------------------------------
Du coup j'ai juste suivi le lien de l'email, puis cliqué sur "activer" (Accès pour les applications moins sécurisées), et c'est bon ça fonctionne...
Et j'ai aussi remis TLS au lieu d'SSL, et conservé le smtp de gmail :
$mail->SMTPSecure = 'tls';
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
Merci de ton aide en tous cas ;)
Salut,
Peut-être une piste, mais, pour avoir déjà utilisé PHPMailer avec une adresse gmail, tu devrais essayer avec le SMTP de gmail.
Bon courage
Salut Thomas,
Je viens d'essayer en modifiant le php.ini :
SMTP=smtp.gmail.com
smtp_port=465
et le code :
$mail->Host = 'smtp.gmail.com';
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
Mais j'ai la même erreur.
Check le lien que te renvoi PHPMailer qui traite le cas de gmail (double authentification, etc).