Problème d'envoi avec phpmailer selon les serveurs
RésoluMicha_74 Messages postés 33 Statut Membre -
Voici mon problème : J'ai installé et utilisé phpmailer selon les indications trouvées sur github et pas de problème pour envoyer des mails depuis mon site à partir de formulaires quand je passe par le serveur de mon école. Mais quand je test en local, ou chez mon hébergeur web (world light, pour le besoin d'un stage en entreprise) cela ne fonctionne plus.
En local, le mail n'est pas envoyé et le message d'erreur apparaît.
Chez mon hébergeur, le mail semble s'envoyer (message de succès) mais je ne le reçois pas.
Je vous transmet la partie de code, merci d'avance pour votre aide :).
[code]try{
$this->mail->From=$emailExpediteur;
$this->mail->FromName=$nomExpediteur;
$this->mail->Subject="Balance âgée";
$this->mail->MsgHTML($emailContent);
$this->mail->AltBody="Votre messagerie n'accepte pas le format HTML";
$this->mail->CharSet="UTF-8";
$this->mail->AddAddress($emailDestinataire);
$this->mail->AddAttachment($file_location);
if($this->mail->Send()){
$message[].="Email envoyé avec succès";
$type[].="success";
$desc[].='Envoi mail';
}
else{
$message[].="L'email n'a pas pu être envoyé";
$type[].="error";
$desc[].='Envoi mail';
}
}
catch(Exception $mail){
echo "Erreur :".$mail->ErrorInfo;
}[/code]
J'utilise une architecture MVC, voici le constructeur du model où se trouve l'initialisation de la classe phpmailer.
[code]<?php
include 'dompdf/autoload.inc.php';
use Dompdf\Dompdf;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'PHPMailer-master/src/PHPMailer.php';
require 'PHPMailer-master/src/Exception.php';
class Model{
/**
- @varstring connexion au serveur via PDO
- @accessprotected
- /
protected $connexion;
/**
- @varstring requette SQL
- @accessprotected
- /
protected $requete;
protected $pdf;
protected $mail;
/**
- Méthode de construction de la class
*
- /
public function __construct(){
//Définition des constantes contenants les identifiants de connexion
define('SERVER' ,"localhost");
define('USER' ,"root");
define('PASSWORD',"");
define('BASE' ,"*******");
try{
//On tente de se connecter avec la méthode PDO avec ces identifiants
$this->connexion= new PDO("mysql:host=".SERVER.";dbname=".BASE, USER, PASSWORD);
}
catch(Exception $e){
echo "Erreur : " . $e->getMessage();
}
$this->pdf= new Dompdf();
$this->mail=new PHPMailer();
}[/code]
6 réponses
Un problème d'envoi d'e-mails via PHPMailer est discuté : en local les messages ne partent pas et chez PlanetHoster, un message de succès n'entraîne pas la réception des mails.
Les réponses évoquent la vérification des paramètres SMTP et l'authentification, l'essai avec des comptes Gmail pour tester et l'usage de réglages PlanetHoster comme webmail.world.planethoster.net:25, avec identifiant et mot de passe.
D'autres évoquent des difficultés d'authentification et les limitations possibles des serveurs SMTP locaux ou d'hébergeurs, ainsi que la nécessité de tester avec une adresse hébergée sur le même fournisseur.
Une nuance utile: world Lite est le service gratuit de PlanetHoster, et des ressources externes sur les balises de code et les forums du fournisseur ont été partagées.
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, es-tu certain du nom de ton hébergeur? -
Non autant pour moi, world <b>Lite</b> est le nom du service gratuit proposé par l'hébergeur PlanetHoster.
Et aussi je m'excuse pour la mise en forme du code, la balise [code] ne semble pas fonctionner...
En vous remerciant. -
Je vous remercie,
Je regarde tout ça et je reviens vers vous ;)-
pour l'utilisation en local, je suppose que tu as adapté tes fichiers de configuration pour te connecter à un service de messagerie?
- Je n'ai pas adapté mes fichiers en local car je peut déjà faire mes tests sur le serveur de mon école, je voulais m'occuper de mon hébergeur en priorité pour que le client puisse tester la fonctionnalité.
Après lectyre de votre lien, j'ai crée un compte de messagerie depuis le panneau de commande de planetHoster, et modifié mon code comme ceci :try{ $this->mail->Host='webmail.world.planethoster.net:25'; $this->mail->Username='******@mywebsitearctest.yn.fr'; $this->mail->Password='*************'; $this->mail->From=$emailExpediteur; $this->mail->FromName=$nomExpediteur; $this->mail->Subject="Balance âgée"; $this->mail->MsgHTML($emailContent); $this->mail->AltBody="Votre messagerie n'accepte pas le format HTML"; $this->mail->CharSet="UTF-8"; $this->mail->AddAddress($emailDestinataire); $this->mail->AddAttachment($file_location); if($this->mail->Send()){ $message[].="Email envoyé avec succès"; $type[].="success"; $desc[].='Envoi mail'; } else{ $message[].="L'email n'a pas pu être envoyé"; $type[].="error"; $desc[].='Envoi mail'; } } catch(Exception $mail){ echo "Erreur :".$mail->ErrorInfo; }
Mais toujours la meme chose, quand j'envoi le mail depuis mywebsitearctest.yn.fr j'ai le message de succès mais le mail ne s'envoi pas.
-
-
Je ne comprend pas cela fait 3 fois que j'envoi mon message mais rien e s'affiche dans la conversation. Les avez-vous reçus?
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Je n'ai pas adapté mes fichiers en local car je peut déjà faire mes tests sur le serveur de mon école, je voulais m'occuper de mon hébergeur en priorité pour que le client puisse tester la fonctionnalité.
Après lectyre de votre lien, j'ai crée un compte de messagerie depuis le panneau de commande de planetHoster, et modifié mon code comme ceci :
Mais toujours la meme chose, quand j'envoi le mail depuis mywebsitearctest.yn.fr j'ai le message de succès mais le mail ne s'envoi pas.-
-
-
-
Disons que c'est assez différent de mon problème à moi.
1: Je ne suis pas chez Hosteur mais planetHoster (Dans le lien il s'agit de Hosteur apparemment)
2: Je n'ai pas de soucis avec un compte mail en particulier, aucun ne fonctionne que se soit yahoo, gmail ou autre.
3: Je n'ai aucun message d'erreur
Cependant une des réponse suggérée de crée un compte de messagerie dédié depuis la panneau de commande de l'hébergeur. -
-
-
Bonjour,
Je reposte ma question car le post précédent ne me permettait pas d'éditer du code...
Voici le problème : Mon hébergeur est planethoster, j'utilise phpmailer pour envoyer des mails générés depuis mon site web. Quand je l'envoi depuis le serveur de mon école, sans préciser de compte de messagerie, cela fonctionne sans problème, mais quand je le met en ligne sur planète hoster le mail ne s'envoi pas bien que le message de succès apparaisse.
J'ai d'abord crée un compte de messagerie dans planetHoster et insérer les identifiants de connexion dans mon code que voici :
try{ $this->mail->Host='webmail.world.planethoster.net:25'; $this->mail->Username='******@mywebsitearctest.yn.fr'; $this->mail->Password='*************'; $this->mail->From=$emailExpediteur; $this->mail->FromName=$nomExpediteur; $this->mail->Subject="Balance âgée"; $this->mail->MsgHTML($emailContent); $this->mail->AltBody="Votre messagerie n'accepte pas le format HTML"; $this->mail->CharSet="UTF-8"; $this->mail->AddAddress($emailDestinataire); $this->mail->AddAttachment($file_location); if($this->mail->Send()){ $message[].="Email envoyé avec succès"; $type[].="success"; $desc[].='Envoi mail'; } else{ $message[].="L'email n'a pas pu être envoyé"; $type[].="error"; $desc[].='Envoi mail'; } } catch(Exception $mail){ echo "Erreur :".$mail->ErrorInfo; }
J'utilise une architecture MVC, donc voici le constructeur du model ou est initialisée la classe phpmailer :
<?php include 'dompdf/autoload.inc.php'; use Dompdf\Dompdf; use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require 'PHPMailer-master/src/PHPMailer.php'; require 'PHPMailer-master/src/Exception.php'; /** * Création d'une class Mère Model * * Contient les méthodes de traitements des données liées à toutes les entités */ class Model{ /** * @var string connexion au serveur via PDO * @access protected */ protected $connexion; /** * @var string requette SQL * @access protected */ protected $requete; protected $pdf; protected $mail; /** * Méthode de construction de la class * */ public function __construct(){ //Définition des constantes contenants les identifiants de connexion define('SERVER' ,"localhost"); define('USER' ,"*************"); define('PASSWORD',"***************"); define('BASE' ,"***************"); try{ //On tente de se connecter avec la méthode PDO avec ces identifiants $this->connexion= new PDO("mysql:host=".SERVER.";dbname=".BASE, USER, PASSWORD); } catch(Exception $e){ //On récupère l'exeption éventuellement produite et on l'affiche echo "Erreur : " . $e->getMessage(); } $this->pdf= new Dompdf(); $this->mail=new PHPMailer(); }
Je vous remercie pour votre aide