Problème d'envoi avec phpmailer selon les serveurs [Résolu]

Signaler
Messages postés
23
Date d'inscription
samedi 26 septembre 2020
Statut
Membre
Dernière intervention
29 septembre 2020
-
Messages postés
23
Date d'inscription
samedi 26 septembre 2020
Statut
Membre
Dernière intervention
29 septembre 2020
-
Bonjour à tous,

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

Messages postés
12606
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
701
bonjour, es-tu certain du nom de ton hébergeur?
Messages postés
23
Date d'inscription
samedi 26 septembre 2020
Statut
Membre
Dernière intervention
29 septembre 2020

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.
Messages postés
12606
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
701
Messages postés
12606
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
701
Messages postés
23
Date d'inscription
samedi 26 septembre 2020
Statut
Membre
Dernière intervention
29 septembre 2020

Je vous remercie,

Je regarde tout ça et je reviens vers vous ;)
Messages postés
12606
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
701
pour l'utilisation en local, je suppose que tu as adapté tes fichiers de configuration pour te connecter à un service de messagerie?
Messages postés
23
Date d'inscription
samedi 26 septembre 2020
Statut
Membre
Dernière intervention
29 septembre 2020
>
Messages postés
12606
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020

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.
Messages postés
23
Date d'inscription
samedi 26 septembre 2020
Statut
Membre
Dernière intervention
29 septembre 2020

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?
Messages postés
12606
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
701
rien entre mon #6 et ton #11.
Messages postés
23
Date d'inscription
samedi 26 septembre 2020
Statut
Membre
Dernière intervention
29 septembre 2020

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.
Messages postés
23
Date d'inscription
samedi 26 septembre 2020
Statut
Membre
Dernière intervention
29 septembre 2020
>
Messages postés
12606
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020

Avec 467 ca ne marche pas :
New-Object : Exception lors de l'appel de «.ctor» avec «2» argument(s): «Une tentative de connexion a échoué car le
parti connecté n’a pas répondu convenablement au-delà d’une certaine durée ou une connexion établie a échoué car
l’hôte de connexion n’a pas répondu»    
Messages postés
23
Date d'inscription
samedi 26 septembre 2020
Statut
Membre
Dernière intervention
29 septembre 2020
>
Messages postés
12606
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020

Ah mais maintenant ca marche en local en utilisant :
$this->mail->smtpConnect(
                    array(
                        "ssl" => array(
                            "verify_peer" => false,
                            "verify_peer_name" => false,
                            "allow_self_signed" => true
                        )
                    )
                );    
Messages postés
12606
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
701 >
Messages postés
23
Date d'inscription
samedi 26 septembre 2020
Statut
Membre
Dernière intervention
29 septembre 2020

as-tu également essayé en envoyant un mot de passe incorrect (
$this->mail->Password='*************' 
)?
cela permet de vérifier que le comportement est diffèrent en cas d'erreur.
Messages postés
23
Date d'inscription
samedi 26 septembre 2020
Statut
Membre
Dernière intervention
29 septembre 2020
>
Messages postés
12606
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020

Oui j'ai essayé, dans ce cas je reçois le message SMTP d'erreur suivant : Could not authenticate.
Messages postés
23
Date d'inscription
samedi 26 septembre 2020
Statut
Membre
Dernière intervention
29 septembre 2020
>
Messages postés
23
Date d'inscription
samedi 26 septembre 2020
Statut
Membre
Dernière intervention
29 septembre 2020

Autant pour moi. Oui j'ai essayé aussi et toujours pareil : Message 250 OK depuis SMTP, quand le mdp est le bon, mais aucun mail reçus et aucun mail visible depuis le panneau de commande de mon adresse mail dédié sur planetHoster.

Je ne comprend vraiment pas.
Messages postés
23
Date d'inscription
samedi 26 septembre 2020
Statut
Membre
Dernière intervention
29 septembre 2020

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