Voila deux heures que je m'arrache les cheveux pour envoyer un mail en php et rien ne fonctionne. je pense que c'est un probleme de configuration mais je m'y connait pas suffisamment pour résoudre le soucis, donc je m'en remet à vous
Logiquement, comme lorsqu'on utilise outlook, j'imagine qu'il faut préciser l'identifiant et mot de passe pour que php puisse utiliser le compte laposte, non?
Avant tout : je te conseille de ne pas utiliser la fonction mail(); Dans 95% des cas ton script sera mal configuré, il lui manquera des informations "capitales" dans le header et donc finira très probablement, et même surement, dans les SPAMS (Gmail les affiche même pas parfois).
je vois que tu travailles pour l'instant en local. Sache que l'erreur avec la fonction mail() de PHP est normale.
Si tu utilises WAMP par exemple, tu n'arrivera pas à tes fin avec cette fonction, ou alors difficilement.
Mais ce n'est pas peine perdue car tu as d'autres alternatives pour faire tes tests.
Je t'invite à tester MailDev (http://danfarrelly.nyc/MailDev/) Il est facile à installer, et te propose une interface graphique pour intercepter tes emails. Grâce à cet outil, plus de problème de SMTP.
Ton code avec PHPMailer est bon, cependant ce que t'affiches le navigateur montre que le code PHP que tu as écris n'est pas exécuté (on voit même les commentaires). Regarde si tu n'as pas oublié dans le début du fichier la balise <?php ou quelque chose d'autre qui provoquerai cela...
Je vais pouvoir me relancer dans ma galère d'envoi de mail .
Edit:
Bon grâce à vous deux, j'ai enfin réussi à installer PHPMailer via composer. J'ai testé composer avec une autre bibliothèque et ça fonctionne... mais forcément : pas avec PHPMailer .
J'ai l'erreur suivante :
(Je sais Aurélien : c'est pourtant clair !!! )
La classe PHPMailer\PHPMailer n'est pas trouvée. Mais pourquoi???
Je vous joins les screens de mes dossiers, peut être y trouverez vous ma faute.
Mon fichier composer.json (stocké dans mon dossier MAO avec le fichier test2.php) :
Déjà félicitations de t'être penché sur Composer ! D'après tes screens, tu sembles avoir utilisé correctement Composer. Mais, quelque chose est étrange. N'aurais-tu pas essayé de supprimer un sous dossier nommé PHPMailer ? Normalement tu devrais avoir "vendor/PHPMailer/PHPMailer/src" (je viens d'essayer sur mon ordi). Ce qui me laisse croire que tu as fais ça volontairement est que dans la documentation la ligne pour importer la librairie est
use PHPMailer\PHPMailer\PHPMailer;
Alors que la tienne est seulement :
use PHPMailer\PHPMailer;
Il faut laisser Composer gérer tout tout seul et ne pas modifier l'arborescence dans le dossier /vendor. La raison est que la liste des imports correspondants aux différents php sont listés dans le fichier autoload_classmap.php (extrait) :
J'ai tout réinstaller par soucis d'erreurs, et j'avais bien oublié une procédure en changeant le composer.json entre ma librairie de test et la librairie de phpmailer : je n'avais pas fait de 'composer update'.
Du coup j'ai un message d'erreur encore jamais vu!!! youpi !!!
Mais j'ai l'impression d'avancer donc c'est cool (même si ça ne fonctionne pas encore).
Petite question à part (ou pas)
Composer a installé un fichier ntuser (fichier DAT), le dossier 'vendor' et les fichiers 'composer.json' et 'composer.lock' dans le répertoire 'C:\Users\Landry'.
J'ai copier le dossier 'vendor' et les fichiers 'composer.json' et 'composer.lock' dans mon repertoire 'wamp/www/MAO' , est ce que c'est utile?
Ca n'a rien changé au fonctionnement : au lancement de mon fichier test2.php, ça mouline 20 secondes et hop! petit message qui fait plaisir...
EDIT :
Après xxx recherches, J'ai pu lire qu'il fallait paramétrer le php.ini , certains disent que phpmailer ne l'utilise pas donc que ça ne sert à rien...Je testerai demain au cas où... on sait jamais, sur un malentendu...
Et le problème du 'localhost' revient régulièrement aussi...
On se demande quand est-ce que ça va fonctionner (bravo d'être persévérant !)
On dirait que PHPMailer tente d'envoyer le mail par le biais de la fonction mail(); plutôt que d'utiliser le serveur SMTP. D'après la doc https://github.com/PHPMailer/PHPMailer#a-simple-example (et oui toujours la doc officielle )il semble manquer une ligne importante qui est :
$mail->isSMTP();
Mais encore une fois, je te conseille de faire un copier-coller du code se trouvant dans le lien (celui de la ligne au-dessus). Ça évitera beaucoup d'erreurs ! En effet, il y a une autre erreur par exemple :
$mail->Send(); // la fonction que tu utilises
$mail->send(); //celle de la doc officielle avec une majuscule en moins
Pour obtenir ce magnifique résultat, j'ai complètement repris le code dans l'exemple github. Et j'ai créé une adresse gmail pour les tests.
<?php
// Import PHPMailer classes into the global namespace
// These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
//Load composer's autoloader
require 'vendor/autoload.php';
$mail = new PHPMailer(true); // Passing `true` enables exceptions
try {
//Server settings
$mail->SMTPDebug = 2; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'maotestphp@gmail.com'; // SMTP username
$mail->Password = 'phptestmao'; // SMTP password
$mail->SMTPSecure = 'ssl'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 25; // TCP port to connect to (587)
//Recipients
$mail->setFrom('maotestphp@gmail.com', 'Landry Guilloton');
$mail->addAddress('guilloton.landry@laposte.net', 'Moi'); // Add a recipient
$mail->addReplyTo('maotestphp@gmail.com', 'Landry Guilloton');
//Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}
?>
L'erreur semble assez claire : le serveur (WAMP) n'arrive pas à se connecter au SMTP de Google. Bon bah du coup pas de magie hein, je suis allé sur la page conseillé et j'ai lu les erreurs potentielles https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Voici les erreurs les plus probables :
l'extension openssl n'est pas installée ou mal configurée. Pour le savoir fait tourner cette ligne de code :
<?php echo (extension_loaded('openssl')?'OK ce n\'est pas le probleme':'c\'est le probleme!')."\n"; ?>
Google n'autorise pas la connexion par sécurité pour ton compte. Plusieurs solutions sont conseillées : autoriser ton appareil (ton PC) : https://accounts.google.com/b/0/DisplayUnlockCaptcha (étonnant que ça soit ça mais bon c'est dans le doc de PHPMailer....) ou alors autoriser la connexion au compte pour des applications moins sécurisées (plus probable) : https://support.google.com/accounts/answer/6010255
Keep it real !
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP