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 :

Envoi email avec php mailer


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    195
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2008
    Messages : 195
    Points : 82
    Points
    82
    Par défaut Envoi email avec php mailer
    Bonjour à toutes et à tous,

    Je souhaite envoyer des emails en automatique pour mon site via le serveur ou ce dernier est hébergé (OVH).
    Pour cela, je me sers de CRON.

    J'ai réalisé de nombreux tests (à mon niveau de connaissance ) pour m'assurer que cela fonctionne.
    Suite à de nombreuses déconvenues, j'ai abouties à deux programmes qui fonctionnent très bien en mode manuel.
    Et 50% de réussite en mode CRON...

    Le premier programme était pour vérifier que la transmission d’e-mails fonctionnait.
    Le second, pour continuer à manipuler php mailer (qui me pose de nombreux soucis car je ne comprends tout )

    Programme 1:
    Fonctionne en mode manuel et en mode CRON
    Soucis - va directement dans les spams et est converti au format texte brut

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    <?php
     
    $to = "xxxx@x.com";
    $from  = "yyyy@y.com";
    ini_set("SMTP", "smtp.nomdomain.com");
     
    $JOUR  = date("Y-m-d");
    $HEURE = date("H:i");
     
    $Subject = "Test Mail - $JOUR $HEURE";
     
    $mail_Data = "";
     
    $mail_Data .= "<html> \n";
     
    $mail_Data .= "<head> \n";
     
    $mail_Data .= "<title> Subject </title> \n";
     
    $mail_Data .= "</head> \n";
     
    $mail_Data .= "<body> \n";
     
     
     
    $mail_Data .= "Mail HTML simple  : <b>$Subject </b> <br> \n";
     
    $mail_Data .= "<br> \n";
     
    $mail_Data .= "bla bla <font color=red> bla </font> bla <br> \n";
     
    $mail_Data .= "Etc.<br> \n";
     
    $mail_Data .= "</body> \n";
     
    $mail_Data .= "</HTML> \n";
     
     
     
    $headers  = "MIME-Version: 1.0 \n";
     
    $headers .= "Content-type: text/html; charset=iso-8859-1 \n";
     
    $headers .= "From: $from  \n";
     
    $headers .= "Disposition-Notification-To: $from  \n";
     
    // Message de Priorité haute
     
    // -------------------------
     
    $headers .= "X-Priority: 1  \n";
     
    $headers .= "X-MSMail-Priority: High \n";
     
     
     
    $CR_Mail = TRUE;
     
     
     
    $CR_Mail = @mail ($to, $Subject, $mail_Data, $headers);
     
     
     
       if ($CR_Mail === FALSE)
     
          {
     
          //On récupère le contenu du fichier
    		$texte = file_get_contents('./script_auto/test_email.txt');
     
    		//On ajoute notre nouveau texte à l'ancien
    		$today = date("Y-m-d H:i:s");  
    		$texte .= "\n*";
    		$texte .= 'Email non transmis à: '.$today;
     
    		//On écrit tout le texte dans notre fichier
    		file_put_contents('./script_auto/test_email.txt', $texte);
     
          }
     
       else
     
          {
     
          //On récupère le contenu du fichier
    		$texte = file_get_contents('./script_auto/test_email.txt');
     
    		//On ajoute notre nouveau texte à l'ancien
    		$today = date("Y-m-d H:i:s");  
    		$texte .= "\n*";
    		$texte .= 'Erreur - Email transmis à: '.$today;
     
    		//On écrit tout le texte dans notre fichier
    		file_put_contents('./script_auto/test_email.txt', $texte);
     
          }
     
    ?>
    Programme 2:
    Fonctionne en mode manuel
    Est envoyé dans les spams en mode manuel
    Ne fonctionne pas en mode CRON
    En revanche mon fichier txt me dit que le message a bien été envoyé. Mais il n'arrive jamais dans la boite e-mail.


    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <?php
     
    use PHPMailer\PHPMailer\PHPMailer; //? Aucune idée sur l'utilité de cela
    use PHPMailer\PHPMailer\Exception; //? Aucune idée sur l'utilité de cela
    use PHPMailer\PHPMailer\SMTP; //? Aucune idée sur l'utilité de cela
     
    require_once "./script_auto/PHPMailer/Exception.php"; 
    require_once "./script_auto/PHPMailer/PHPMailer.php";
    require_once "./script_auto/PHPMailer/SMTP.php";
     
    //Create a new PHPMailer instance
    $mail = new PHPMailer();
    //Set who the message is to be sent from
    $mail->setFrom('yyyy@yyy.yyyy', 'BOU59000');
     
    //Set who the message is to be sent to
    $mail->addAddress('xxxx@x.com', 'YOU59000');
    //Set the subject line
    $mail->Subject = 'PHPMailer mail() test';
    //Read an HTML message body from an external file, convert referenced images to embedded,
    //convert HTML into a basic plain-text alternative body
    $mail->msgHTML='<strong>Message html</strong>';
    //Replace the plain text body with one created manually
    $mail->AltBody = 'This is a plain-text message body';
     
     
    //send the message, check for errors
    if (!$mail->send()) {
        //On récupère le contenu du fichier
    		$texte = file_get_contents('./script_auto/test_email_phpmailer.txt');
     
    		//On ajoute notre nouveau texte à l'ancien
    		$today = date("Y-m-d H:i:s");  
    		$texte .= "\n*";
    		$texte .= 'Email transmis à: '.$today;
     
    		//On écrit tout le texte dans notre fichier
    		file_put_contents('./script_auto/test_email_phpmailer.txt', $texte);
    } else {
        //On récupère le contenu du fichier
    		$texte = file_get_contents('./script_auto/test_email_phpmailer.txt');
     
    		//On ajoute notre nouveau texte à l'ancien
    		$today = date("Y-m-d H:i:s");  
    		$texte .= "\n*";
    		$texte .= 'Email non transmis à: '.$today;
     
    		//On écrit tout le texte dans notre fichier
    		file_put_contents('./script_auto/test_email_phpmailer.txt', $texte);
    }
    J'ai cru comprendre que phpmailer dispose de nombreux avantages en parcourant le forum.
    L'idée serait donc de pouvoir aboutir à une solution php mailer qui:
    . Fonctionne en CRON
    . N'arrive pas dans les spams
    Et je viens a vous car j'ai tourné le problème dans beaucoup de sens et je suis coincé

    D'avance merci pour votre aide

    *Pour la partie authentification php mailer, pour le moment je mets de côté que ça plantait en mode manuel et automatique...
    Question: Quelle est la plus value de l'authentification si les emails peuvent partir sans?

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 394
    Points : 15 755
    Points
    15 755
    Par défaut
    si un e-mail arrive dans les spams c'est à la destination qu'il faut se renseigner et pas à l'envoi.

  3. #3
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 791
    Points : 3 058
    Points
    3 058
    Par défaut
    Il existe des outils sur le Web où tu envoies un email et tu reçois un compte-rendu, il y à des années que j'ai fait cela mais voici deux sites :

    * https://www.mail-tester.com/
    * https://www.acychecker.com/email-checker/

    L'idée est d'analyser les en-têtes de ton mail et de toute la chaîne (comme le serveur d'envoi et sa configuration)

    Au final ton email est scoré. Plus le score est mauvais plus le risque d'apparaître en spam est élevé.

  4. #4
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    195
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2008
    Messages : 195
    Points : 82
    Points
    82
    Par défaut
    Bonjour,

    Tout d'abord merci pour vos retours.

    J'ai testé https://www.mail-tester.com/ pour mes deux codes.

    . Le second code ne fonctionnait pas.
    . Le premier fonctionnait mais avec une note de 6.5/10.

    Deux solutions:
    . Soit je règle tous les soucis au premier code (=recréer un php mailer?)
    . soit je récris complétement le code php mailer et j'ajuste les paramètres jusqu'ç ce que ce soit ok...)

    J'ai opté pour l'option n°2.
    Après un paquet de manipulation...
    Le port semble ne pas être le bon. J'en ai essayé un autre qui passe parfaitement en mode manuel.
    La note est de 8.5/10 et il ne passe plus en SPAM du coup.

    Je tente un passage par CRON désormais.
    Je vous tiens informé de l'évolution et cloture ce post si résultat concluant.

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

Discussions similaires

  1. [1.x] Envoi d'un email avec Swift Mailer
    Par colimasson dans le forum Symfony
    Réponses: 4
    Dernier message: 09/12/2010, 18h01
  2. Envoi d'email avec php
    Par -Fly- dans le forum Langage
    Réponses: 2
    Dernier message: 06/11/2010, 12h24
  3. [Mail] envoi d'email avec php à l'aide de blat
    Par lahlousimo dans le forum Langage
    Réponses: 3
    Dernier message: 28/02/2007, 11h30
  4. [Mail] Envoi email avec php
    Par laymounos dans le forum Langage
    Réponses: 8
    Dernier message: 01/06/2006, 14h31

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