Recevoir une copie des e-mails clients sur Prestashop 1.6.1.x

13Nov

Recevoir une copie des e-mails clients sur Prestashop 1.6.1.x

Je partage une petite astuce sur Prestashop 1.6.1, parce que j'ai eu beaucoup de mal à trouver une solution, en espérant que ça serve à d'autres.

 

new nike football boots 2012 2017 - 002 - Nike Air Max 270 ESS Ανδρικά Παπούτσια Γκρι / Λευκό DM2462 | air avow nike boots - 100 - Cheap Nike Zoom Pegasus 38 White/Black - Pink Blast DJ5397

Le fonctionnement par défaut de Prestashop : en activant le module "Alertes mail" / "Mail alerts", il est très simple de recevoir une notification de commande pour être alerté immédiatement d'une commande. Pour autant, ce mail n'est pas celui qui est envoyé au client (email_conf), ce qui peut être gênant lorsqu'on personnalise fortement les confirmations de commande, ou tout simplement pour avoir trace de la confirmation originale dans le cas où le client n'ait pas reçu le mail.

 

C'est également très utile en phase de test, lorsqu'on veut être certain de ne pas passer à côté de certains e-mails automatiques qui sont envoyés au long des étapes de traitement de la commande (paiement accepté, en cours de livraison, produits virtuels avec téléchargement...etc). Dans mon cas, c'était essentiellement pour tester différentes surcharges de la classe PaymentModule qui me servent à personnaliser les e-mails envoyés en fonction des produits commandés.

 

Au fil des évolutions des versions de Prestashop, 3 solutions :

 

  • Bidouillage de la classe Mail (prestashop 1.3) en ajoutant $to_list->addBcc($configuration['PS_SHOP_EMAIL'], $configuration['PS_SHOP_NAME']);


- /* Construct multiple recipients list if needed */ if (is_array($to)) { $to_list = new Swift_RecipientList(); foreach ($to as $key => $addr) { $to_name = NULL; $addr = trim($addr); if (!Validate::isEmail($addr)) die(Tools::displayError('Error: mail parameters are corrupted')); if ($toName AND is_array($toName) AND Validate::isGenericName($toName[$key])) $to_name = $toName[$key]; $to_list->addTo($addr, $to_name); } $to_plugin = $to[0]; $to = $to_list; } else { /* Simple recipient, one address */ $to_plugin = $to; $to = new Swift_Address($to, $toName); }

à remplacer par :

/* Construct multiple recipients list if needed */ $to_list = new Swift_RecipientList(); if (is_array($to)) { foreach ($to as $key => $addr) { $to_name = NULL; $addr = trim($addr); if (!Validate::isEmail($addr)) die(Tools::displayError('Error: mail parameters are corrupted')); if ($toName AND is_array($toName) AND Validate::isGenericName($toName[$key])) $to_name = $toName[$key]; $to_list->addTo($addr, $to_name); } $to_plugin = $to[0]; } else { /* Simple recipient, one address */ $to_plugin = $to; $to_list->addTo($to, $toName); } $to_list->addBcc($configuration['PS_SHOP_EMAIL'], $configuration['PS_SHOP_NAME']); $to = $to_list;

 

  • Modification de Swift.php (prestashop 1.4 à prestashop 1.6.0)

Dans le fichier tools/swift/swift.php file, après : 

 if ($recipients instanceof Swift_Address)
{
$list = new Swift_RecipientList();
$list->addTo($recipients);
}

Ajouter :
$list->addBcc('Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.');

 

  • Et enfin, sous la version actuelle (prestashop 1.6.1), on revient à une surcharge de la classe Mail : du coup il suffit de créer un fichier Mail.php dans "override/classes/" avec le contenu suivant :

<?php

class Mail extends MailCore
{

    public static function Send($id_lang, $template, $subject, $template_vars, $to,
        $to_name = null, $from = null, $from_name = null, $file_attachment = null, $mode_smtp = null,
        $template_path = _PS_MAIL_DIR_, $die = false, $id_shop = null, $bcc = null, $reply_to = null)
    {

        $bcc =     'Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.';

        return parent::Send($id_lang, $template, $subject, $template_vars, $to,
            $to_name, $from, $from_name, $file_attachment, $mode_smtp,
            $template_path, $die, $id_shop, $bcc, $reply_to);

    }

}

Il vous suffit de remplacer la valeur de $bcc par l'adresse que vous souhaitez, et le tour est joué.

Coordonnées

A propos

Conception de sites internet professionnels

23 ans d'expérience :

- Chef de projet Web pendant 5 ans

- Puis Indépendant depuis 18 ans.


En savoir plus