Warum werden in Magento 1.9 Bestell-E-Mails über die Warteschlange gesendet, während Rechnungs-E-Mails direkt gesendet werden?
-
29-09-2020 - |
Frage
Warum werden in Magento 1.9 Bestell-E-Mails über die Warteschlange gesendet, während Rechnungs-E-Mails direkt gesendet werden?Ich habe den Code für Bestellung und Rechnung überprüft und den order-sendNewOrderEmail
nutzt die Warteschlange, while invoice->sendEmail()
überspringt es komplett.Dadurch wird die Bestell-E-Mail nach der Rechnungs-E-Mail gesendet und nicht davor, falls die Bestellung automatisch genehmigt wird!
Lösung
Bestell-E-Mails werden aus verschiedenen Gründen über die Warteschlange gesendet:
- Vermeiden Sie eine Verlangsamung des Frontends beim Versenden der E-Mail
- Bei Fehler erneut senden
- Vermeiden Sie Fehler beim Auschecken/nach dem Auschecken
Lösung 1 (Bestellung sofort per E-Mail senden):
Wenn Sie die Bestell-E-Mail sofort senden möchten, können Sie dies überschreiben Mage_Sales_Model_Order::queueNewOrderEmail()
Methode durch Verketten der folgenden Zeilen:
/** @var $emailQueue Mage_Core_Model_Email_Queue */
$emailQueue = Mage::getModel('core/email_queue');
$emailQueue->setEntityId($this->getId())
->setEntityType(self::ENTITY)
->setEventType(self::EMAIL_EVENT_NAME_NEW_ORDER)
->setIsForceCheck(!$forceMode);
$mailer->setQueue($emailQueue)->send();
Zu:
/** @var $emailQueue Mage_Core_Model_Email_Queue */
$mailer->send();
Lösung 2 (Rechnungen über Warteschlange senden):
Die umgekehrte Lösung besteht darin, Rechnungen die Warteschlange nutzen zu lassen:
Sie müssen überschreiben Mage_Sales_Model_Order_Invoice::sendEmail
Ändern:
// Set all required params and send emails
$mailer->setSender(Mage::getStoreConfig(self::XML_PATH_EMAIL_IDENTITY, $storeId));
$mailer->setStoreId($storeId);
$mailer->setTemplateId($templateId);
$mailer->setTemplateParams(array(
'order' => $order,
'invoice' => $this,
'comment' => $comment,
'billing' => $order->getBillingAddress(),
'payment_html' => $paymentBlockHtml
)
);
$mailer->send();
Zu:
// Set all required params and send emails
$mailer->setSender(Mage::getStoreConfig(self::XML_PATH_EMAIL_IDENTITY, $storeId));
$mailer->setStoreId($storeId);
$mailer->setTemplateId($templateId);
$mailer->setTemplateParams(array(
'order' => $order,
'invoice' => $this,
'comment' => $comment,
'billing' => $order->getBillingAddress(),
'payment_html' => $paymentBlockHtml
)
);
$emailQueue = Mage::getModel('core/email_queue');
$emailQueue->setEntityId($this->getId())
->setEntityType('order_invoice')
->setEventType('new_invoice');
$mailer->setQueue($emailQueue)->send();