Pourquoi PHP mail retourne false ?
Résolu
Herve_be
Messages postés
1123
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'envoie un mail aux membres d'une communauté en utilisant php Mail.
Dans la majorité des cas tout fonctionne bien mais parfois la fonction Mail retourne False, je ne parviens pas à savoir pourquoi.
J'ai essayé
J'envoie un mail aux membres d'une communauté en utilisant php Mail.
Dans la majorité des cas tout fonctionne bien mais parfois la fonction Mail retourne False, je ne parviens pas à savoir pourquoi.
J'ai essayé
$Return = "error_get_last = ".error_get_last(); var_dump($Return);mais le résultat est vide, une idée ?
Configuration: Windows / Chrome 99.0.4844.84
A voir également:
- Php mail returns false
- Publipostage mail - Accueil - Word
- Windows live mail - Télécharger - Mail
- Créer une adresse mail hotmail - Guide
- Comment télécharger un mail - Guide
- Cegetel mail ✓ - Forum Mail
28 réponses
Je viens d'essayer avec Gmail comme ceci
j'obtiens 80072EE2 Le délai imparti à l’opération est dépassé
$mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->SMTPAuth = true; $mail->Username = 'MonAdresseGmail@gmail.com'; $mail->Password = 'MonMdpGmail'; $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; $mail->Port = 465;
j'obtiens 80072EE2 Le délai imparti à l’opération est dépassé
J'ai essayé d'appeler mon script ci-dessus (Debug activé) à partir d'un navigateur.
J'obtiens
2022-04-07 08:15:31 SMTP ERROR: Failed to connect to server: Network is unreachable (101)
SMTP Error: Could not connect to SMTP host.
Fatal error: Uncaught PHPMailer\PHPMailer\Exception: SMTP Error: Could not connect to SMTP host. in /customers/e/a/4/XXXXX.XX/httpd.www/PHPMailer/src/PHPMailer.php:2198 Stack trace: #0 /customers/e/a/4/XXXXX.XX/httpd.www/PHPMailer/src/PHPMailer.php(1988): PHPMailer\PHPMailer\PHPMailer->smtpConnect(Array) #1 /customers/e/a/4/XXXXX.XX/httpd.www/PHPMailer/src/PHPMailer.php(1654): PHPMailer\PHPMailer\PHPMailer->smtpSend('Date: Thu, 7 Ap...', 'Bod...') #2 /customers/e/a/4/XXXXX.XX/httpd.www/PHPMailer/src/PHPMailer.php(1492): PHPMailer\PHPMailer\PHPMailer->postSend() #3 /customers/e/a/4/XXXXX.XX/httpd.www/Mailer.php(59): PHPMailer\PHPMailer\PHPMailer->send() #4 {main} thrown in /customers/e/a/4/XXXXX.XX/httpd.www/PHPMailer/src/PHPMailer.php on line 2198
J'obtiens
2022-04-07 08:15:31 SMTP ERROR: Failed to connect to server: Network is unreachable (101)
SMTP Error: Could not connect to SMTP host.
Fatal error: Uncaught PHPMailer\PHPMailer\Exception: SMTP Error: Could not connect to SMTP host. in /customers/e/a/4/XXXXX.XX/httpd.www/PHPMailer/src/PHPMailer.php:2198 Stack trace: #0 /customers/e/a/4/XXXXX.XX/httpd.www/PHPMailer/src/PHPMailer.php(1988): PHPMailer\PHPMailer\PHPMailer->smtpConnect(Array) #1 /customers/e/a/4/XXXXX.XX/httpd.www/PHPMailer/src/PHPMailer.php(1654): PHPMailer\PHPMailer\PHPMailer->smtpSend('Date: Thu, 7 Ap...', 'Bod...') #2 /customers/e/a/4/XXXXX.XX/httpd.www/PHPMailer/src/PHPMailer.php(1492): PHPMailer\PHPMailer\PHPMailer->postSend() #3 /customers/e/a/4/XXXXX.XX/httpd.www/Mailer.php(59): PHPMailer\PHPMailer\PHPMailer->send() #4 {main} thrown in /customers/e/a/4/XXXXX.XX/httpd.www/PHPMailer/src/PHPMailer.php on line 2198
6 avril 2022 à 19:33
Peut-être ton hébergeur bloque-t-il cette communication 'smtp.gmail.com:465).
Que fait-on alors ?
Y a-t-il un intérêt à persister avec gmail puisqu'avec l'adresse mail associée à mon espace web ça fonctionne ?
Peut-être ton hébergeur bloque-t-il cette communication 'smtp.gmail.com:465).
Que fait-on alors ?
Y a-t-il un intérêt à persister avec gmail puisqu'avec l'adresse mail associée à mon espace web ça fonctionne ?
Je vais donc continuer avec l'adresse mail associée à mon espace web, merci pour votre aide concernant l'utilisation de PHPMail.
Par définition Spam = email indésirable non sollicité.
Je propose un logiciel gratuit, les utilisateurs qui me communiquent leur adresse mail acceptent de recevoir des infos concernant ce logiciel, ces envois sont rares : la dernière fois fin 2019.
Ils peuvent d'ailleurs se désinscrire : ci-dessous exemple de mail
A mon sens il ne s'agit donc pas de Spam et il n'y a que Yahoo qui bloque : comment le lui faire comprendre ?
Objet : RV Reef Tools pour Hervé
Bonjour Hervé,
Vous recevez ce mail parce que vous utilisez les logiciels RV Reef Tools
Si ce n'est déjà fait ne manquez pas de rejoindre notre communauté de récifalistes sur Le Forum Récifal .
Ce forum vous permettra de poser des questions et/ou de répondre à d'autres amateurs d'aquariums récifaux.
Bienvenue sur Le Forum Récifal
Si vous ne souhaitez plus recevoir de mail concernant RVRT répondez-y par 'Désinscrire' sans modifier le titre !
Par définition Spam = email indésirable non sollicité.
Je propose un logiciel gratuit, les utilisateurs qui me communiquent leur adresse mail acceptent de recevoir des infos concernant ce logiciel, ces envois sont rares : la dernière fois fin 2019.
Ils peuvent d'ailleurs se désinscrire : ci-dessous exemple de mail
A mon sens il ne s'agit donc pas de Spam et il n'y a que Yahoo qui bloque : comment le lui faire comprendre ?
Objet : RV Reef Tools pour Hervé
Bonjour Hervé,
Vous recevez ce mail parce que vous utilisez les logiciels RV Reef Tools
Si ce n'est déjà fait ne manquez pas de rejoindre notre communauté de récifalistes sur Le Forum Récifal .
Ce forum vous permettra de poser des questions et/ou de répondre à d'autres amateurs d'aquariums récifaux.
Bienvenue sur Le Forum Récifal
Si vous ne souhaitez plus recevoir de mail concernant RVRT répondez-y par 'Désinscrire' sans modifier le titre !
Je ne doute pas de tes bonnes intentions.
Vu de Yahoo, il est difficile de deviner tes intentions, ton comportement ressemble probablement à celui d'un spammeur.
C'est le métier de services tel que mailjet ou sendinblue, de faire ce genre d'envois sans être suspecté.
Tu avais mentionné Outlook. Si tu utilises le logiciel Outlook de Microsoft, je pense que tu peux, via VBA, automatiser l'envoi de mails.
Vu de Yahoo, il est difficile de deviner tes intentions, ton comportement ressemble probablement à celui d'un spammeur.
C'est le métier de services tel que mailjet ou sendinblue, de faire ce genre d'envois sans être suspecté.
Tu avais mentionné Outlook. Si tu utilises le logiciel Outlook de Microsoft, je pense que tu peux, via VBA, automatiser l'envoi de mails.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Avec mail() de temps en temps ça ne fonctionnait pas, je ne savais pas pourquoi; j'ai passé pas mal de temps à convertir le processus avec PHPMailer : c'est la même chose sauf que, quand ça ne fonctionne pas, je sais pourquoi; mon hébergeur ne me permet pas d'utiliser une adresse mail externe comme Gmail; j'ai essayé de m'inscrire sur MailJet (max 200 mails par jour en version gratuite) mais je ne reçois pas le mail de confirmation; je ne vais pas recommencer en VBA, j'arrête les frais.
Si dans quelques mois il me prends l'envie d'envoyer un paquet de mails je le ferai avec PHPMailer et l'adresse mail associée à mon espace web.
Encore merci à tous.
Si dans quelques mois il me prends l'envie d'envoyer un paquet de mails je le ferai avec PHPMailer et l'adresse mail associée à mon espace web.
Encore merci à tous.
Puisque j'ai eu réponse à ma question (dans le titre), c'est fait.
Question hors sujet à propos de PHPMailer
Par contre je ne comprends pas les instructions 'use' : si quelqu'un pouvait m'expliquer la syntaxe, je ne trouve pas sur Internet.
Merci
Question hors sujet à propos de PHPMailer
use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\Exception; include 'PHPMailer/src/PHPMailer.php'; include 'PHPMailer/src/SMTP.php'; include 'PHPMailer/src/Exception.php';J'ai un répertoire 'PHPMailer' qui contient un sous-répertoire 'src' qui contient les 3 fichiers .php, je comprends bien les 'include'.
Par contre je ne comprends pas les instructions 'use' : si quelqu'un pouvait m'expliquer la syntaxe, je ne trouve pas sur Internet.
Merci
Bonjour,
Cette syntaxe fait partie des espaces de nom (namespaces) :
https://www.php.net/manual/fr/language.namespaces.php
Cette syntaxe fait partie des espaces de nom (namespaces) :
https://www.php.net/manual/fr/language.namespaces.php
Merci mais c'est la syntaxe que je ne comprends pas.
Que représentent les 3 PHPMailer dans
Que représentent les 3 PHPMailer dans
use PHPMailer\PHPMailer\PHPMailer;
Le 3e PHPMailer correspond à la classe du même nom.
Cette classe est définie dans l'espace de nom PHPMailer\PHPMailer, voir au début de la classe :
https://github.com/PHPMailer/PHPMailer/blob/master/src/PHPMailer.php
Le fait que l'espace de nom soit PHPMailer\PHPMailer est un choix arbitraire du développeur, on pourrais utiliser un autre nom. Par convention, le premier fragment correspond à l'auteur (qui se nomme PHPMailer), le second fragment correspond au nom du projet (même nom).
Pour utiliser cette classe, il faut donc faire un "use" en indiquant l'espace de nom puis le nom de la classe.
Autre exemple, si on veux utiliser la classe DKIM proposé sur un autre projet du même auteur :
https://github.com/PHPMailer/DKIMValidator/blob/main/src/DKIM.php
Puisque l'espace de nom de cette classe est PHPMailer\DKIMValidator, afin d'utiliser cette classe il faudra donc faire un use PHPMailer\DKIMValidator\DKIM;
Cette classe est définie dans l'espace de nom PHPMailer\PHPMailer, voir au début de la classe :
namespace PHPMailer\PHPMailer;
https://github.com/PHPMailer/PHPMailer/blob/master/src/PHPMailer.php
Le fait que l'espace de nom soit PHPMailer\PHPMailer est un choix arbitraire du développeur, on pourrais utiliser un autre nom. Par convention, le premier fragment correspond à l'auteur (qui se nomme PHPMailer), le second fragment correspond au nom du projet (même nom).
Pour utiliser cette classe, il faut donc faire un "use" en indiquant l'espace de nom puis le nom de la classe.
Autre exemple, si on veux utiliser la classe DKIM proposé sur un autre projet du même auteur :
https://github.com/PHPMailer/DKIMValidator/blob/main/src/DKIM.php
Puisque l'espace de nom de cette classe est PHPMailer\DKIMValidator, afin d'utiliser cette classe il faudra donc faire un use PHPMailer\DKIMValidator\DKIM;
Il est souvent utile, dans ces cas-là, d'introduire des erreurs, pour mieux comprendre.
Avec mail() et l'adresse mail associée à mon serveur ça fonctionne mais la fonction retourne parfois False et je ne sais pas pourquoi.
Avec PHPMailer et l'adresse mail associée à mon serveur ça fonctionne et j'ai l'explication des mails non envoyés : considéré comme spam par Yahoo.
Avec mail() et une adresse Gmail j'ai un Time Out.
Je n'ai toujours pas compris quel intérêt j'aurais à utiliser une adresse Gmail; j'ai d'ailleurs vu qu'on ne peut pas envoyer plus de 500 messages par jour.
Il ne s'agit pas d'utiliser une adresse Gmail, il s'agit de profiter de ce que tu as écrit le 1 avril 2022 à 18:33: "J'ai essayé d'envoyer le même mail "à la main" (avec Outlook) à un des destinataires qui était en erreur, ça fonctionne.".
Au départ, via mail() ou via ta première utilisation de PHPMailer, le mail était directement "envoyé" par ton serveur, comme expliqué le 2 avril 2022 à 17:38.
En utilisant différemment PHPMailer, en appelant , en précisant , le mail est envoyé, comme le fait Outlook, en passant par le serveur mail de Google.
Comme écrit le 6 avril 2022 à 19:28, peut-être que Yahoo fait plus confiance à Google qu'à ton hébergeur.
Peut-être pourrais-tu te créer une adresse email chez Yahoo, et, si le destinataire est chez Yahoo, envoyer le mail via le serveur mail de Yahoo.
Comme on te l'a déjà dit .... active le debug et regarde ce que ça t'affiche.
=> Pour le debug, il faut ajouter
et bien sûr, lors de l'envoi (que tu ne montres pas dans ton code )
Il serait bien également de nous montrer le reste du code ... le FROM, le TO .. bref, tout le code en rapport avec ton appel à phpmailer.
80072EE2 Le délai imparti à l’opération est dépassé
voici mon code complet