Partage
  • Partager sur Facebook
  • Partager sur Twitter

Envoyer un email html (newsletter) avec script php

    2 octobre 2021 à 12:11:58

    Bonjour, 

    Sur mon site internet (prestashop), je souhaite automatiser l'envoie d'une newsletter à mes clients, 1 par mois, en sélectionnant chaque jours les clients qui se sont inscrits ce jour là. Au niveau de la sélection des clients, c'est ok. et d'ailleurs, l'envoi marchait encore il y a quelques semaines, mais là, le mail envoyé est vide.

    Je suppose qu'il doit y avoir une incompatibilité entre mon script et mon html, mais je n'y connais rien et le fait que ça marchait avant me perturbe.

    Voici donc le code php, 

    <?php
    
    // 21.01.21 - Webbax | autonewsletter tuto 126
    require(dirname(__FILE__).'/../../config/config.inc.php');
    
    //$token = Tools::getValue('token');
    //if($token!='NEWS2835'){die('error token');}
    
    // config
    $from = 'contact@lyn-et-or-bijoux.com';
    
    // sélectionne les clients inscrits à la date du jour
    $sql = '
    SELECT * FROM '._DB_PREFIX_.'customer 
    WHERE `deleted`=0 
    AND `active`=1
    AND `newsletter`=1
    AND `date_add` LIKE "%-'.pSQL(date('d')).' %"';
    $customers = Db::getInstance()->executeS($sql);
    dump($customers);
    
    // tester pour un mail spécifique 
    //$customers = array();
    //$customers[0]['email'] = 'jmarilyne28@gmail.com'; 
    
    //die('ON STOPPE TOUT ;)');
    
    $nb_mails_send = 0;
    
    foreach($customers as $c){
    
        $headers = "From: ".$from."\r\n";
    	$headers .= "Reply-To: ".$from."\r\n";
    	$headers .= "MIME-Version: 1.0\r\n";
    	$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
    	$base_url = Tools::getHttpHost(true);
    	$logo_url = $base_url._PS_IMG_ .Configuration::get('PS_LOGO');
    	$shop_name = Configuration::get('PS_SHOP_NAME');
        
    	//$subject = '';
        	//$message = '';
        
        	$subject = '☺ '.Configuration::get('PS_SHOP_NAME').' - Newsletter '.date('m-Y');
        	//$message = Tools::file_get_contents(dirname(__FILE__).'\\'.date('m').'-'.$c['iso_code'].'.html');
    	$message = Tools::file_get_contents('https://lyn-et-or-bijoux.com/modules/scripts/10-fr.html');
        	$message = str_replace('{firstname}',$c['firstname'], $message); 
        
         mail($c['email'],$subject,utf8_decode($message),$headers);
        $nb_mails_send++;
        }
         
    echo 'Mails envoyés : '.$nb_mails_send;
    ?>
    et le code html, je n'ai laissé que l'en-tete car sinon c'était trop long, et le problème doit venir de là...si besoin du reste, merci de me le dire.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
    
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="format-detection" content="telephone=no">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title></title>
        <style type="text/css" emogrify="no"> (...)</style>
    </head>
    (...)
     

    </html>

    Je précise que je m'étais basée sur un tuto de webbax pour le script, et de la rédaction de newsletter avec sendinblue, tout ça ne vient pas de moi.
    Merci d'avance de votre aide et bonne journée

    -
    Edité par pommekiwi28 2 octobre 2021 à 12:17:14

    • Partager sur Facebook
    • Partager sur Twitter

    Envoyer un email html (newsletter) avec script php

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown