web-dev-qa-db-fra.com

Magento: prévisualiser/tester des emails transactionnels avec des données réelles, sans les envoyer?

J'édite certains fichiers phtml inclus dans les e-mails transactionnels dans Magento, mais pour tester les modifications, je dois réellement envoyer les e-mails. Dans le cas de (par exemple) le courrier électronique de confirmation de commande, cela signifie que je dois passer une commande chaque fois que je veux tester un courrier électronique!

Choisir "Aperçu email" dans le backend n'aide pas, car l'email ne contient aucune donnée de commande visible.

Existe-t-il un moyen de prévisualiser un courrier électronique transactionnel tout en le rendant avec les données de la commande?

33
WackGet

De l'utilisateur R.S:

Vous n'avez pas à créer une nouvelle commande, vous pouvez renvoyer un courrier électronique de commande précédent (en accédant à cette commande et en cliquant sur renvoyer un courrier électronique).

C'est la chose la plus proche que j'ai trouvée pour tester rapidement les e-mails lorsque vous vous amusez avec les modèles. Merci R.S!

33
WackGet

Pour les commandes, j'utilise un compte test et un script qui se trouve dans mon répertoire racine.

le script ressemble à ceci:

<?php
include 'app/Mage.php';
Mage::app('default');

$_order = Mage::getModel('sales/order')->load($argv[1]);
$_order->sendNewOrderEmail(); 

et je l'appelle comme:

php -f sendTestEmail.php -- 4303 

où 4303 est l'ordre que j'ai utilisé pour les tests auparavant.

j'espère que cela pourra aider.

15
MutantTurkey

L'extrait suivant restitue le courrier électronique "nouvelle commande client" et l'affiche pour toute commande donnée. Mettez ce qui suit dans /test.php par exemple et naviguez jusqu’au bon emplacement comme http://www.example.com/test.php

require_once 'app/Mage.php';
Mage::app();

// loads the proper email template
$emailTemplate  = Mage::getModel('core/email_template')
                      ->loadDefault('sales_email_order_template');

// All variables your error log tells you that are missing can be placed like this:

$emailTemplateVars = array();
$emailTemplateVars['usermessage'] = "blub";
$emailTemplateVars['store'] = Mage::app()->getStore();
$emailTemplateVars['sendername'] = 'sender name';
$emailTemplateVars['receivername'] = 'receiver name';

// order you want to load by ID

$emailTemplateVars['order'] = Mage::getModel('sales/order')->load(673);

// load payment details:
// usually rendered by this template:
// web/app/design/frontend/base/default/template/payment/info/default.phtml
$order = $emailTemplateVars['order'];
$paymentBlock = Mage::helper('payment')->getInfoBlock($order->getPayment())
                ->setIsSecureMode(true);
$paymentBlock->getMethod()->setStore(Mage::app()->getStore()); 

$emailTemplateVars['payment_html'] = $paymentBlock->toHtml();

//displays the rendered email template
echo $emailTemplate->getProcessedTemplate($emailTemplateVars);
14
chickahoona

Suivez les instructions de ce billet de blog: Magento (L) ocalhost (E) émulateur de messagerie (S) (Nov 2010; de Branko Ajzele) Magento enregistrera les courriels HTML, y compris tous les variables que vous essayez d'envoyer dans var/log.

5
Tom van den Heuvel

Nous avons en fait développé une extension qui vous permet de faire exactement cela: Envoyez un e-mail transactionnel Magento à partir du backend de Magento. J'espère que ce n'est pas trop commercial de le mentionner ici.: http://www.yireo.com/software/magento-extensions/emailtester

3
jissereitsma

Nous avons développé une extension open-source gratuite appelée Hackathon_EmailPreview .

En ce qui concerne les e-mails de commande, vous pouvez les prévisualiser dans le navigateur sans les envoyer et vous pouvez entrer n’importe quel numéro de commande pour vérifier les différentes commandes.

3
Matthias Zeis
0
Alex

Vous pouvez entrer dans le backend, aller chez les clients, sélectionner votre propre utilisateur, et en bas vous aurez "Envoyer un mot de passe généré automatiquement" Insérez le mot de passe administrateur et cliquez sur "Enregistrer et continuer la modification". De cette façon, vous enverrez un mot de passe sur votre propre compte et testerez votre modèle.

0
Iggy

Accédez au fichier app/code/local/Mage/Core/Modèle/Email/Template.php . Dans la fonction d'envoi, il existe un morceau de code autour de la ligne 441

   if ($this->isPlain()) {
         $mail->setBodyText($text);
    } else {
        $mail->setBodyHTML($text);
    }
  echo $text;die();

il fera écho au courrier sur le navigateur sans l'envoyer à l'utilisateur. On peut l'utiliser pour les tests.

0
Rajeev Singh

J'ai publié une extension vous permettant de prévisualiser les e-mails transactionnels de votre back-office. Il vous suffit de passer une commande, puis un bouton d'aperçu du courrier sera disponible dans le BO. De plus, il vous permet d'activer les repères de modèles/blocs directement dans la fenêtre d'aperçu du courrier.

Voir ici: https://github.com/OddBrew/Oddbrew_MailViewer

C'est une extension gratuite, j'espère donc que cela ne relève pas des règles promotionnelles de SO.

0
OddBrew

J'utilise un petit script de test pour envoyer à nouveau l'e-mail de confirmation de commande. Cela fonctionne avec Magento 1.9 car cela déclenche le travail de cronjob pour traiter la file d’email. De plus, il réinitialise l'attribut "Email envoyé" afin que Magento ne passe pas l'envoi de cet email.

include 'app/Mage.php';
Mage::app('default');

$oid = '1234567';

$_order = Mage::getModel('sales/order')->load($oid);    
$_order->setEmailSent('0');
$_order->save();

$_order->sendNewOrderEmail();

// var_dump($_order);

// Trigger email queue
$a = new Mage_Core_Model_Email_Queue();
$a->send();

echo "\nFinished\n";
0
Stefan