Ich bearbeite einige phtml-Dateien, die in Transaktions-E-Mails in Magento enthalten sind, aber um die Änderungen zu testen, muss ich die E-Mails tatsächlich senden. Im Falle einer Bestellbestätigungs-E-Mail bedeutet dies, dass ich jedes Mal eine Bestellung aufgeben muss, wenn ich eine E-Mail testen möchte!
Die Auswahl von "Vorschau-E-Mail" im Backend ist nicht hilfreich, da die E-Mail keine sichtbaren Auftragsdaten enthält.
Gibt es eine Möglichkeit, eine Vorschau einer Transaktions-E-Mail anzuzeigen, diese jedoch mit Auftragsdaten zu rendern?
Von Benutzer R.S:
Sie müssen keine neue Bestellung erstellen. Sie können eine E-Mail mit einer früheren Bestellung erneut senden (indem Sie diese Bestellung aufrufen und auf E-Mail erneut senden klicken).
Das ist das Nächste, was ich gefunden habe, um E-Mails schnell zu testen, wenn Sie mit den Vorlagen herumspielen. Danke R.S!
Für Verkaufsaufträge verwende ich ein Testkonto und ein Skript, das ich in meinem Stammverzeichnis habe.
das Skript sieht so aus:
<?php
include 'app/Mage.php';
Mage::app('default');
$_order = Mage::getModel('sales/order')->load($argv[1]);
$_order->sendNewOrderEmail();
und ich nenne es wie:
php -f sendTestEmail.php -- 4303
dabei ist 4303 die Reihenfolge, die ich zuvor zum Testen verwendet habe.
hoffentlich hilft das.
Das folgende Snippet rendert die E-Mail "Neuer Kundenauftrag" und zeigt sie für eine bestimmte Bestellung an. Fügen Sie zum Beispiel Folgendes in /test.php ein und navigieren Sie einfach zum richtigen Speicherort wie 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);
Befolgen Sie die Anweisungen in diesem Blogpost: Magento (L) ocalhost (E) mail (S) erver (S) imulator (November 2010; von Branko Ajzele) Magento speichert die HTML-E-Mails einschließlich aller Die Variablen, die Sie in var/log
senden möchten.
Wir haben tatsächlich eine Erweiterung entwickelt, mit der Sie genau das tun können: Testen Sie jede Magento Transaktions-E-Mail aus dem Magento Backend. Ich hoffe, es ist nicht zu kommerziell, es hier zu erwähnen.: http://www.yireo.com/software/magento-extensions/emailtester
Wir haben eine kostenlose Open-Source-Erweiterung namens Hackathon_EmailPreview entwickelt.
Bei Bestellmails können Sie eine Vorschau im Browser anzeigen, ohne zu senden. Sie können eine beliebige Bestellnummer eingeben, um zu prüfen, wie die verschiedenen Bestellungen aussehen würden.
http://www.magentocommerce.com/magento-connect/send-a-test-newsletter-to-an-email.html
Gute Erweiterung für den Test-Newsletter
Sie können Backend eingeben, zu Kunden gehen, Ihren eigenen Kundenbenutzer auswählen, und unten wird "Automatisch generiertes Kennwort senden" angezeigt. Geben Sie das Admin-Passwort ein und klicken Sie auf "Speichern und Bearbeitung fortsetzen". Auf diese Weise senden Sie ein Kennwort an Ihr eigenes Konto und testen Ihre Vorlage.
Gehen Sie zur Datei app/code/local/Mage/Core/Model/Email/Template.php . In der Sendefunktion befindet sich um die Zeile 441 herum ein Code
if ($this->isPlain()) {
$mail->setBodyText($text);
} else {
$mail->setBodyHTML($text);
}
echo $text;die();
die E-Mail wird im Browser angezeigt, ohne sie tatsächlich an den Benutzer zu senden. Man kann dies zum Testen verwenden.
Ich habe eine Erweiterung veröffentlicht, mit der Sie Transaktionsmails in Ihrem Back-Office anzeigen können. Sie müssen nur eine Bestellung übergeben, und dann wird eine Schaltfläche für die Mail-Vorschau in der BO verfügbar sein. Außerdem können Sie Vorlagen-/Blockhinweise direkt im E-Mail-Vorschaufenster aktivieren.
Sehen Sie es hier: https://github.com/OddBrew/Oddbrew_MailViewer
Dies ist eine kostenlose Erweiterung, daher hoffe ich, dass sie nicht unter die Verkaufsregeln von SO fällt.
Ich verwende ein kleines Testskript, um die Bestellbestätigungs-E-Mail erneut zu senden. Dies funktioniert mit Magento 1.9, weil dadurch der Cronjob zur Verarbeitung der E-Mail-Warteschlange ausgelöst wird. Außerdem wird das Attribut "E-Mail gesendet" zurückgesetzt, sodass Magento das Senden dieser E-Mail nicht überspringt.
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";