Envoie de mail en local avec PHPMailer

Eléphanteau du PHP | 35 Messages

19 oct. 2016, 11:24

Bonjour à vous,
J'avais déjà exposé mon problème mais je reviens ici parce que ça fait plusieurs jours que je cherche sans aucune solution.
En effet, je dispose d'une application qui permet à ce que chaque fois qu'un enregistrement est effectué un mail doit etre envoyé. Le script d'envoie fonctionne si j'utilise le SMTP de Google. Comme c'est une application qu'on utilise dans mon entreprise, j'aimerais alors éviter de passer par Google. J'ai donc configuré mon serveur SMTP en local en suivant ce tuto:
http://intellitect.com/configuring-wind ... for-relay/
J'ai également intégré le serveur qui héberge mon application sur le même VLAN que mon serveur SMTP et le serveur d'envoie de mail Exchange. Voici alors mon script d'envoie de mail:

Code : Tout sélectionner

include "classes/class.phpmailer.php"; $mail = new PHPMailer(); $mail->IsSMTP(); $mail->SMTPDebug=1; $mail->Mailer = 'smtp'; $mail->SMTPAuth = true; $mail->Host = "smtp.bcb.local"; $mail->Port = 25; $mail->SMTPSecure = 'tls'; $mail->Username = "[email protected]"; $mail->Password = "**********"; $mail->IsHTML(true); $mail->SetFrom("[email protected]"); $mail->Subject ="Panne materiel signale"; $mail->Body ="Veuillez vous connecter a l'application BCB HelpDesk"; $mail->addAddress("[email protected]"); if(!$mail->Send()) echo "Message was not sent <br />PHPMailer Error: " . $mail->ErrorInfo; else echo "Message has been sent";
En exécutant ce script, je rencontre cette erreur:

Code : Tout sélectionner

SMTP -> ERROR: Failed to connect to server: php_network_getaddresses: getaddrinfo failed: Hôte inconnu. (0)
Quelqu'un pourrait m'apporter son aide pour trouver une solution face à ce problème.
Merci à vous

Mammouth du PHP | 686 Messages

19 oct. 2016, 13:22

Salut,
dans le tuto, le serveur SMTP est sur le port 587. Es-tu bien paramétré sur le bon port ?
J'ai aussi trouvé ça sur la toile https://www.drupal.org/node/1706468
A priori, pour certains, ça marche après avoir mis un espace avant le nom du serveur
Donc peut être qu'en mettant $mail->Host = " smtp.bcb.local"; ça marchera
Bon courage !

Eléphanteau du PHP | 35 Messages

19 oct. 2016, 15:51

Salut @sylvaing26;
J'ai consulté le lien que tu m'as envoyé et j'ai intégré la petite modification de l'espace mais ça ne marche pas, l'erreur reste la même.On dirait que je ne parviens pas à accéder sur le serveur qui héberge le SMTP.J'ai même essayé de mettre mon application sur ce serveur qui contient le SMTP mais sans résultat.
Je continue à chercher mais vraiment ça me cause du souci.

Mammouth du PHP | 686 Messages

20 oct. 2016, 11:33

Et est-ce que lorsque tu mets ton application sur ton serveur qui contient le SMTP, si tu lui mets juste localhost ça marche ?

Eléphanteau du PHP | 35 Messages

20 oct. 2016, 11:57

J'ai fait ce que tu viens de me dire mais ça ne marche pas. Je pense qu'il y aurait un petit souci sur mon serveur SMTP. en effet j'ai effectué un ping smtp.gmail.com et j'ai une réponse.Mais lorsque je fais ping smtp.bcb.local, j'ai pas de réponse; c'est pour celà que mon application ne se connecte pas car elle ne trouve pas ce serveur. Mais le souci est que je ne vois pas la cause cde ce problème. Aurais-tu une idée par rapport à cela @sylvaing26

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

20 oct. 2016, 12:47

Bonjour,
La raison de ce message d'erreur est que le serveur smtp.bcb.local n'est pas connu par ton serveur quand il interroge le DNS.

En clair, pour qu'un nom de domaine fonctionne sur internet, il faut qu'il soit déclaré dans le système DNS, qui est en gros une énorme table de correspondance entre entre nom de domaine et adresse
Par exemple : phpfrance.com <=> 217.70.180.131

Dans ton cas, le serveur SMTP que tu as indiqué n'est pas déclaré au niveau DNS et donc ton serveur ne sait pas quelle IP il doit contacter

3 possibilités à voir avec ton admin réseau celle qu'il préfère :
- qu'il déclare le domaine/IP du serveur SMTP sur les DNS publique
- si il a déjà déclaré le domaine/IP sur un DNS en local sur votre réseau, alors il faut qu'il te donne l'IP du serveur local de résolution DNS et que tu modifies la conf de ton serveur pour qu'il utilise ce serveur de résolution DNS. Sur les serveurs Debian, l'IP du résolveurs DNS est à modifier dans le fichier : /etc/resolv.conf
- et enfin une autre solution est de mettre en dur sur ton serveur la correspondance Nom de domaine du SMTP <=> IP en l'ajoutant dans le fichier /etc/hosts
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 35 Messages

20 oct. 2016, 15:02

Bonjour,
Parmi les 3 possibilités que tu viens de me proposer; on a fait la troisième possibilité avec mon admin système
"- si il a déjà déclaré le domaine/IP sur un DNS en local sur votre réseau, alors il faut qu'il te donne l'IP du serveur local de résolution DNS et que tu modifies la conf de ton serveur pour qu'il utilise ce serveur de résolution DNS". Maintenant je dispose de cette adresse IP; à quel niveau je dois mettre cette IP pour la configuration du SMTP??

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

20 oct. 2016, 15:13

salut,

$mail->Host = "ip du smtp"; ?
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 35 Messages

20 oct. 2016, 15:42

@moogli, en mettant ce que tu viens de me dire je reçois cette rreur:
SMTP -> ERROR: STARTTLS not accepted from server: 554 5.7.3 Unable to initialize security subsystem
Qu'est-ce que tu en penses??

Mammouth du PHP | 686 Messages

20 oct. 2016, 15:48

Dans la config de ton programme tu as configuré une connexion sécurisée $mail->SMTPSecure = 'tls';
A priori ton serveur SMTP ne l'est pas et rejette la connexion sécurisée

Eléphanteau du PHP | 35 Messages

20 oct. 2016, 15:56

Maintenant je viens de décocher le chiffrement 'tls' sur mon SMTP et j'ai enlevé $mail->SMTPSecure = 'tls';
Je reçois cette rreur:
SMTP -> ERROR: AUTH not accepted from server: 504 5.7.4 Unrecognized authentication type
Une autre idée par rapport à celà??

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

21 oct. 2016, 09:53

fait un petit effort et regarde la doc tu n'as quand même pas 200 lignes de conf pour utiliser cette classe

peut être que cette ligne est parlante non ? $mail->SMTPAuth = true;

ensuite la personne en charge du serveur smtp doit être à même de te fournir la conf complète pour ce connecter
- utilisateur / mot de passe
- port http
- type authentification
- type de securité

@+
Il en faut peu pour être heureux ......