IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Fiabiliser l'envoi d'emails en automatique + éviter de passer en spam


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2008
    Messages : 248
    Par défaut Fiabiliser l'envoi d'emails en automatique + éviter de passer en spam
    Bonjour à toutes et à tous,

    Je suis à la recherche d'une solution fiable pour automatiser l'envoi d’e-mails et arriver à ce que ces derniers passent les barrières anti-spams.
    Si certains d'entre vous sont déjà passés par cette problématique,
    Avez-vous des solutions à me conseiller ?

    D'avance merci pour vos retours.

    --------------------------------------------------------------------------------------------------------------------------------------------------------------
    Pour un résumé des étapes réalisées :

    Mon site est hébergé sur une place mutualisée.

    Voici les démarches effectuées :

    J'ai utilisé dans un premier temps PHPMailer.
    Ceci fonctionnait bien pendant un temps pou l'envoi des emails (SPF, DKIM, DMARC + utilisation de testeur d'emails pour améliorer le score de ces derniers). Parfois l'envoi ne se faisait pas mais cela restait rare donc je n'ai pas mis d'énergie sur cela.
    Puis, il y a eu une recrudescence des problèmes, la majorité des emails ne partaient pas (emails comptabilisés comme envoyé dans ma BDD (si transmission OK alors inscription mais en réalité email jamais envoyé)), j'ai contacté le SAV.
    Le SAV de ma solution d'hébergement m'a indiqué que 300 emails par heure étaient disponible pour toutes les personnes qui utilisent l'offre mutualisée.
    Ces derniers m'ont orienté vers l'utilisation de la solution mail de PHP...

    Fonction mail de PHP :
    Je peux envoyer avec mon compte 200 emails par heure.
    En suivant mon tableau de bord, je retrouve des chiffres énormes complétement déconnectés de la réalité...
    Je réalise un test :
    . Aucune boucle dans mon programme, le mail est envoyé ou pas et je récupère l'info.
    . Aucune personne en copie d'emails
    . Fichier TXT qui inscrit les emails envoyé (pour voir si cela ne part par ailleurs même si cela me paraissait étonnant vu que... CRON suit juste ce qui est inscrit dans le programme...)
    Résultat pour 1 email envoyé = 1 ligne dans mon fichier txt => une traçabilité de mon hébergeur de 65 emails envoyés... Avec une limite à 200... j'envoie 3 emails et c'est bouclé...

    De plus, tous les emails que j'envoie via la fonction mail de PHP passe en spam (même avec une règle mise en place pour indiquer que l'expéditeur est légitime).
    Courrier en spam + limite très limite...
    Je contacte le SAV qui m'indique que je dois utiliser des boucles d'ou le problème et si cela ne marche pas je dois utiliser une vraie solution comme PHPMailer...

    Bref on tourne en boucle et le problème ne sera jamais réglé de cette manière la.

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 604
    Par défaut
    utiliser la fonction php mail n'est pas une bonne idée, tu pourras très difficilement créer un mail correspondant au pré-requis pour ne pas passer en SPAM. Passes plutôt pas PHPMailer.

    Ensuite il faut voir pourquoi tu passes en SPAM. Essayes avec mail-tester.com.

    Par ailleurs, voir si l'ip d’émission n'est pas blacklistée vu que c'est du mutualisé.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2008
    Messages : 248
    Par défaut
    Bonjour,

    Merci pour ton retour.

    Effectivement je ne suis pas fan de la fonction mail de PHP.
    Mais sur l'offre de mon hébergeur, en utilisant PHPMailer, ce dernier limite l'envoi de mail à un certain nombre.
    Et comme je suis sur une offre mutualisée... un grand nombre de mes mails automatiques ne partent pas (car d'autres que moi envoient aussi des mails).

    Je me demandais s'il n'existait pas des solutions d'envoi d'emails qui me permettraient de m'affranchir des limites de mon hébergeur actuel.
    Un peu dans la logique suivante :
    SOLUTION HÉBERGEMENT : Script CRON => Lire la table X de la BDD Y, et pour chaque email inscrit dans cette table, tu vas envoyer transmettre la demande d'envoi d'un email à la solution email
    SOLUTION EMAIL : Je reçois ici la demande 1 de CRON, je sais que je dois prendre le script email001 et l'envoyer à monadresse@solution.com
    Je reçois ici la demande 2 de CRON, je sais que je dois prendre le script email001 et l'envoyer à monadresse@youpi.fr

    Une autre solution aurait été de disposer de mon propre serveur ou d'un serveur privé virtuel mais je ne dispose pas des connaissances / compétences pour le faire.
    Donc cela me parait trop compliqué pour moi à ce stade.

    A ce stade, et suite à un échange avec le SAV de ma solution d'hébergement, ces derniers m'ont donné 3 pistes :
    . Brevo
    . Mail jet
    . Mail kitchen
    . Il y en a certainement beaucoup d'autres mais c'est un point de départ.

    La question que je me pose est :
    . Avec ces pistes, est il possible d'avoir le cheminement expliqué plus haut ?
    . Et si oui, comment faire pour que les scripts situés sur ma SOLUTION D’HÉBERGEMENT ordonne x ou y actions à ma SOLUTION E-MAIL ? (A moins que le chemin ne soit pas du tout cela... )

    D'avance merci pour toute éclairage à ce sujet (voir des solutions qui sont plus adaptées que celles citées précédemment)

    EDIT :
    Bon si j'ai bien compris, Brevo, mail jet... sont des SMTP.
    Si c'est bien le cas, cela veut dire que je peux utiliser PHPMailer et c'est dans PHPMailer que je donne les infos du SMTP Messagerie solutions externe (Serveur, utilisateur, mdp).
    Du coup, au niveau de ma SOLUTION HEBERGEMENT, il n'y a aucune modification quasiment à faire. Seulement remplacer les données SMTP dans mon script.
    A partir de la, CRON donne un ordre d'envoi d'email via PHPMalier, et PHPMailer, au lieu de passer par le SMTP de ma SOLUTION HERBEGEMENT, passe par le SMTP de la SOLUTION EMAIL.

    Bon je remodifie mes emails en les passant de nouveau de la fonction email de phph à utilisation de PHPMailer
    Je complète PHPMailer avec les infos d'une SOLUTION EMAIL et je vois si cela fonctionne.

    Je donnerai le résultat ici (où ma problématique si cela plante )
    Ce qui risque fortement d'arriver si mon cheminement ci-dessus est foireux (car je n'ai rien compris )

  4. #4
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2008
    Messages : 248
    Par défaut
    Bonjour,

    Je viens de terminer de configurer le tout.
    Je place ici les étapes que j'ai réalisé.

    Je place également les liens utilisés pour y arriver.

    --------------------------------------------------------
    1 - Utilisation de la dernière version de PHPMailer :

    https://github.com/PHPMailer/PHPMailer/
    a. Cliquer sur "Release", au jour de mon message, il se situe dans le bandeau de navigation à droite
    https://github.com/PHPMailer/PHPMailer/releases
    b. Descendre dans Contributos -> Assets et télécharger le "Source Code"
    c. Placer les éléments dans l'emplacement désiré
    d. Retourner sur la plage principale (lien au dessus de a.) et descendre jusque "Installation & loading"
    pour récupérer les informations

    2 - Placer les éléments dans votre page php
    (Cf. d.)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;
     
    require 'path/to/PHPMailer/src/Exception.php';
    require 'path/to/PHPMailer/src/PHPMailer.php';
    require 'path/to/PHPMailer/src/SMTP.php';
    Changer les chemins des trois require en fonction de l'emplacement ou vous avez dézippé le "Source Code"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    //Create an instance; passing `true` enables exceptions
    $mail = new PHPMailer(true);
     
    try {
        //Server settings
        $mail->SMTPDebug = SMTP::DEBUG_SERVER;                      //Enable verbose debug output => Passer à SMTP::DEBUG_OFF;  quand vous n'avez plus besoin de debugger
        $mail->isSMTP();                                            //Send using SMTP
        $mail->Host       = 'smtp.example.com';                     //Set the SMTP server to send through => Changer par l'hote (hote = solution emailing)
        $mail->SMTPAuth   = true;                                   //Enable SMTP authentication
        $mail->Username   = 'user@example.com';                     //SMTP username => Changer par votre email sur l'hote
        $mail->Password   = 'secret';                               //SMTP password => Changer par votre mdp sur l'hote 
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;            //Enable implicit TLS encryption
        $mail->Port       = 465;                                    //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`(suivant ce que vous dit l'hote)
     
        //Recipients => Tout ce qui n'est pas utile peut etre placé en commentaire ou supprimé
        $mail->setFrom('from@example.com', 'Mailer'); // Emetteur de l'email, info reprise dans le mail 
        $mail->addAddress('joe@example.net', 'Joe User');     //Add a recipient - A qui est envoyé l'email
        $mail->addAddress('ellen@example.com');               //Name is optional Aucune idée pour ça
        $mail->addReplyTo('info@example.com', 'Information'); //Si on veut répondre à l'email
        $mail->addCC('cc@example.com'); // Copie email
        $mail->addBCC('bcc@example.com'); //Copie cachée
     
        //Attachments => Si pièces jointe => Je n'ai pas utilisé donc je n'en sais pas plus (supp ou com)
        $mail->addAttachment('/var/tmp/file.tar.gz');         //Add attachments
        $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    //Optional name
     
        //Content
        $mail->isHTML(true);                                  //Set email format to HTML
        $mail->Subject = 'Here is the subject';        // Titre de votre mail
        $mail->Body    = 'On place ici le message de notre email';
        $mail->AltBody = 'Message alternatif';
     
        $mail->send();
        echo 'Message has been sent';
    } catch (Exception $e) {
        echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
    }
    3 - Changer les données de l'exemple suivant en les informations hôte SMTP, adresse et MDP suivant solution désirée.
    Si cela ne fonctionne pas, c'est que la solution nécessite une authentification (suivant nom de domaine).
    Voir la doc de la solution pour configurer DKIM DMARC

    PS : Je ne place pas de lien vers la solution que j'ai testé afin de ne pas faire de pub.
    Les pistes sont dans mon mail précédent.

    Je pense qu'une personne plus expérimentée aurait fait tout cela bien plus vite...


    @Christophe, merci pour ton message. Tu as raison avec PHPMailer c'est plus pratique pour ne pas atterrir en SPAM qu'avec la fonction mail de PHP.

    Merci à toutes et à tous.

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 604
    Par défaut
    Bon si j'ai bien compris, Brevo, mail jet... sont des SMTP.
    Plus que ça il s'agit de solution d'emailing qui gère l'envoi en masse. Ils proposent en général une API permettant de communiquer avec.

    Adapté pour les newsletter par exemple, pas pour une authentification via mail (même si ça peut marcher).
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2008
    Messages : 248
    Par défaut
    Citation Envoyé par Christophe Voir le message
    Plus que ça il s'agit de solution d'emailing qui gère l'envoi en masse. Ils proposent en général une API permettant de communiquer avec.

    Adapté pour les newsletter par exemple, pas pour une authentification via mail (même si ça peut marcher).
    Merci pour ton retour

    Je me suis débrouillé comme un (à peu près) grand.

    Faut encore que je creuse ces notions, pour le moment c'est encore un peu flou pour moi (même si cela s’éclairci petit à petit)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoi d'emails automatiquement dans mon application
    Par n2engineer5 dans le forum Android
    Réponses: 6
    Dernier message: 31/10/2013, 12h26
  2. service windows pour envoi d'emails automatiquement
    Par fasarah dans le forum Services Windows
    Réponses: 2
    Dernier message: 09/04/2012, 16h35
  3. Service Envoi email en automatique
    Par nouri_t dans le forum Bibliothèques, systèmes et outils
    Réponses: 1
    Dernier message: 10/06/2011, 09h48
  4. Envoi d'email automatique
    Par doudou_ca dans le forum ASP.NET
    Réponses: 6
    Dernier message: 01/12/2009, 21h13
  5. [PB 10] Envoi d'Email automatique
    Par raph38 dans le forum Powerbuilder
    Réponses: 2
    Dernier message: 26/02/2008, 15h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo