Salut à toutes et à tous,

Voici mon problème (site http://jennycuisinepourvous.fr/):
Lorsque je souhaite envoyer un email via SMTP, je rencontre deux types d'erreurs: soit le script boucle indéfiniement (et me bloque carément l'accès au site via DNS par la même occasion), soit il me renvoie l'erreur "SMTP connect failed".

Le site est hébergé chez 1and1, du coup j'ai essayé de passer par leur serveur SMTP, plantage. Pareil via le SMTP de Google. J'ai temporairement réussi via un serveur (gratuit) de l'hébergeur Hostinger mais depuis la semaine dernière il me retourne cette (foutue) erreur "SMTP connect failed".

Du coup j'aimerais savoir pourquoi c'est si compliqué de faire transiter un put*** d'email par un serveur SMTP (pour 1and1, j'ai esssayé de changer de port mais rien à faire, leur config' (https://assistance.1and1.fr/mail-c65618/adresses-e-mail-1and1-c65666/logiciels-de-messagerie-c85133/serveurs-popimapsmtp-pour-configurer-un-compte-e-mail-1and1-a792332.html/) ne fonctionne pas et me fait boucler ma fonction d'envoie) ??

Quelqu'un aurait une petite idée ? :)

8 réponses


betaWeb
Auteur
Réponse acceptée

Bon finalement j'ai toruvé la solution en changeant "$this->mailer->IsSMTP();" par "$this->mailer->IsMail();" et là plsu de soucis.
Merci quand même pour votre aide :)

betaWeb
Auteur

Personne ?

On a du mal à t'aider sans code ^^
Utilises-tu une class mail ?
Quel est ton code pour envoyer le mail ?
Parce qu'en soit, en utilisant une class genre PHPMailer ou PHP Simple mail c'est fait en quelques secondes.

betaWeb
Auteur

@shinix: Ce n'est pas un problème de code j'en suis certain puisque j'ai pu envoyer des emails via le serveur Hostinger pendant un petit mois.
Après si ça peut aider, voici le constructeur de ma classe Email:

        public function __construct($subject, $body, $mailto = null, $layout = "default", $sender = null){
            require_once(WEBROOT . 'include/phpMailer/class.phpmailer.php');
            require_once(WEBROOT . 'include/phpMailer/class.smtp.php');

            $config = Config::getInstance();

            $this->subject       = $subject;
            $this->body          = $body;
            $this->sender        = (is_null($sender)) ? $config->get('smtp_user') : $sender;
            $this->mailto        = $mailto;
            $this->layout        = $layout;
            $this->template_path = WEBROOT . "views/layout/email/email_";

            $this->mailer = new PHPMailer();

            $this->mailer->IsSMTP();
            $this->mailer->SMTPAuth     = true;
            $this->mailer->Host         = $config->get('smtp_host');
            $this->mailer->Port         = $config->get('smtp_port');
            $this->mailer->SMTPSecure   = $config->get('smtp_secure');
            $this->mailer->Username     = $this->sender;
            $this->mailer->Password     = $config->get('smtp_pass');

            $this->mailer->CharSet      = 'UTF-8';
            $this->mailer->Encoding     = '8bit';
            $this->mailer->ContentType  = 'text/html; charset=utf-8\r\n';
            $this->mailer->WordWrap     = 900;
            $this->mailer->isHTML(true);

            $this->mailer->SetFrom('no-reply@jennycuisinepourvous.fr', 'Jenny Cuisine Pour Vous');

            $this->mailer->Subject = $this->subject;
            $this->mailer->Body    = $this->getTemplate();
            $this->mailer->AltBody = strip_tags($this->body);

            $this->getAddresses();
        }

As-tu essayé le mode debug ?

$mail->SMTPDebug  = 2; // enables SMTP debug information (for testing)
                       // 1 = errors and messages
                       // 2 = messages only
betaWeb
Auteur

@Huggy: Yes ! Ca me retourne toujours la même erreur, à savoir (comme précisé dans mon billet) "SMTP connect failed".
Alors oui le message est explicite. Mais ce que j'aimerais savoir c'est: POURQUOI ?! :/

Fais un test avec la commande mail() de php
au moins on sait qu'elle est bien configurée par 1and1
si ça marche et que tu reçois le mail, regarde le smtphost

betaWeb
Auteur

Le mail part bien, le sender est "cgi-mailer@kundenserver.de".