Warum werden in Magento 1.9 Bestell-E-Mails über die Warteschlange gesendet, während Rechnungs-E-Mails direkt gesendet werden?

magento.stackexchange https://magento.stackexchange.com/questions/103208

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!

War es hilfreich?

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();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top