Pourquoi PHP mail retourne false ?
Résolu/Fermé
Herve_be
Messages postés
1077
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
6 décembre 2024
-
1 avril 2022 à 16:15
yg_be Messages postés 23427 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 14 janvier 2025 - 8 avril 2022 à 17:04
yg_be Messages postés 23427 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 14 janvier 2025 - 8 avril 2022 à 17:04
A voir également:
- Php mail return false
- Yahoo mail - Accueil - Mail
- Publipostage mail - Accueil - Word
- Windows live mail - Télécharger - Mail
- Thunderbird mail - Télécharger - Mail
- Boîte mail française gratuite - Guide
28 réponses
Herve_be
Messages postés
1077
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
6 décembre 2024
9
6 avril 2022 à 17:15
6 avril 2022 à 17:15
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é
Herve_be
Messages postés
1077
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
6 décembre 2024
9
Modifié le 7 avril 2022 à 10:31
Modifié le 7 avril 2022 à 10:31
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
yg_be
Messages postés
23427
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 janvier 2025
1 559
7 avril 2022 à 11:30
7 avril 2022 à 11:30
"Network is unreachable": cela confirme mon hypothèse du 6 avril 2022 à 19:33.
Herve_be
Messages postés
1077
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
6 décembre 2024
9
7 avril 2022 à 11:56
7 avril 2022 à 11:56
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 ?
yg_be
Messages postés
23427
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 janvier 2025
1 559
7 avril 2022 à 12:47
7 avril 2022 à 12:47
Si ton code PHP ne peut pas se connecter aux serveurs mail externes, cela semble une voie sans issue.
Objectivement, ce que tu fais ressemble énormément à l'envoi de spams, il est donc logique que cela soit rendu difficile.
Objectivement, ce que tu fais ressemble énormément à l'envoi de spams, il est donc logique que cela soit rendu difficile.
Herve_be
Messages postés
1077
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
6 décembre 2024
9
Modifié le 7 avril 2022 à 12:56
Modifié le 7 avril 2022 à 12:56
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 !
yg_be
Messages postés
23427
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 janvier 2025
1 559
7 avril 2022 à 13:39
7 avril 2022 à 13:39
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
Herve_be
Messages postés
1077
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
6 décembre 2024
9
7 avril 2022 à 15:20
7 avril 2022 à 15:20
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.
yg_be
Messages postés
23427
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 janvier 2025
1 559
7 avril 2022 à 15:43
7 avril 2022 à 15:43
pourras-tu marquer la discussion comme résolue?
Herve_be
Messages postés
1077
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
6 décembre 2024
9
Modifié le 8 avril 2022 à 09:59
Modifié le 8 avril 2022 à 09:59
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
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
8 avril 2022 à 14:44
8 avril 2022 à 14:44
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
Herve_be
Messages postés
1077
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
6 décembre 2024
9
8 avril 2022 à 15:50
8 avril 2022 à 15:50
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;
yg_be
Messages postés
23427
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 janvier 2025
1 559
8 avril 2022 à 16:27
8 avril 2022 à 16:27
As-tu examiné le fichier PHPMailer/src/PHPMailer.php?
Quelle instruction namespace contient-il?
Quel est donc le nom absolu de la classe définie dans ce fichier?
Quelle instruction namespace contient-il?
Quel est donc le nom absolu de la classe définie dans ce fichier?
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
8 avril 2022 à 16:34
8 avril 2022 à 16:34
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;
yg_be
Messages postés
23427
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 janvier 2025
1 559
>
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
8 avril 2022 à 17:04
8 avril 2022 à 17:04
Je pense qu'on peut se passer du use, et faire
ou bien, avec un use:
est équivalent à:
$mail = new PHPMailer\PHPMailer\PHPMailer(true);
ou bien, avec un use:
use PHPMailer\PHPMailer\PHPMailer as zorglub; $mail = new zorglub(true);
use PHPMailer\PHPMailer\PHPMailer;
est équivalent à:
use PHPMailer\PHPMailer\PHPMailer as PHPMailer;
Herve_be
Messages postés
1077
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
6 décembre 2024
9
8 avril 2022 à 16:39
8 avril 2022 à 16:39
Merci à vous deux.
6 avril 2022 à 19:33
Il est souvent utile, dans ces cas-là, d'introduire des erreurs, pour mieux comprendre.
7 avril 2022 à 09:33
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.
7 avril 2022 à 11:48
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.
6 avril 2022 à 22:10
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.
7 avril 2022 à 09:36
80072EE2 Le délai imparti à l’opération est dépassé
voici mon code complet