Magento 1.9 – Bestell eMails sofort versenden und nicht über Cron

Ab Magento Version 1.9 werden die Bestellbestätigungs-eMails nicht mehr per Event verschickt (also nach erfolgreicher Bestellung) sondern über eine Mail-Queue, die über den Cron angestoßen wird. In vielen Fällen wird die Bestellbestätigung also nur alle 15 Minuten verschickt.

Ausgerechnet bei der Bestellbestätigung nicht wirklich optimal, da der Kunde diese nach der Bestellung erwartet, um sicher zu sein, dass auch wirklich alles geklappt hat. Bei Rechnungsmails oder Versandbestätigungen wäre es hingegen wohl nicht so schlimm, wenn diese einige Minuten später verschickt würden. Diese werden aber weiterhin per Event verschickt – also direkt.

Wer nun doch möchte, dass die Bestellbestätigung direkt nach der Bestellung verschickt wird, kann dies relativ unkompliziert nachrüsten.

Hierzu kopiert man die Datei app/code/core/Mage/Sales/Model/Order.php in den Ordner app/code/local/Mage/Sales/Model/Order.php

und sucht dort nach der Zeile

$mailer->setQueue($emailQueue)->send();

Diese wird auskommentiert oder gelöscht und durch diese Zeile ersetzt

$mailer-> send();

Anschließend wird dann noch die app/design/frontend/[IhrTemplate]/[IhrTemplate]/template/checkout/success.phtml geöffnet und ganz oben noch vor dem schließenden ?> folgender Code integriert:

//Bestellbestätigung ohne Cron
$order = Mage::getModel('sales/order');
$incrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
$order->loadByIncrementId($incrementId);

try{ $order->sendNewOrderEmail();}
catch (Exception $ex) { echo "Email Not Sent..."; }
$customer = Mage::getSingleton('customer/session')->getCustomer();
$email = $customer->getEmail();

Anschließend eventuell noch einmal den Cache leeren. Nun kommen die Mails aber direkt nach der Bestellung.

Update vom 17.02.2017

Es fiel auf, dass immer wieder Bestellbestätigungsmails doppelt verschickt wurden. Um dies zu beheben, wurde die Änderung der success.phtml wieder rückgängig gemacht (s.o.). Sollte also auch das Problem des doppelten eMail-Versandes auftauchen, dann diese Anpassung wieder entfernen und nur die Order.php ändern.

Update vom 25.07.2017

Sollte der o.g. Weg nicht funktionieren, kann auch ein andere Weg verfolgt werden:

Man kopiert app/code/core/Mage/Core/Model/Email/Template.php nach

app/code/local/Mage/Core/Model/Email/Template.php

und entfernt dort dann die Zeilen (ca. 407-426)

        if ($this->hasQueue() && $this->getQueue() instanceof Mage_Core_Model_Email_Queue) {
            /** @var $emailQueue Mage_Core_Model_Email_Queue */
            $emailQueue = $this->getQueue();
            $emailQueue->clearRecipients();
            $emailQueue->setMessageBody($text);
            $emailQueue->setMessageParameters(array(
                    'subject'           => $subject,
                    'return_path_email' => $returnPathEmail,
                    'is_plain'          => $this->isPlain(),
                    'from_email'        => $this->getSenderEmail(),
                    'from_name'         => $this->getSenderName(),
                    'reply_to'          => $this->getMail()->getReplyTo(),
                    'return_to'         => $this->getMail()->getReturnPath(),
                ))
                ->addRecipients($emails, $names, Mage_Core_Model_Email_Queue::EMAIL_TYPE_TO)
                ->addRecipients($this->_bccEmails, array(), Mage_Core_Model_Email_Queue::EMAIL_TYPE_BCC);
            $emailQueue->addMessageToQueue();

            return true;
        }

ohne Ersatz. Anschließend wurde die Bestellbestätigung umgehend verschickt.

Update vom 19.01.2018

Auch im Zusammenhang mit teils nicht mehr ankommenden Mails, bitte einen Blick in DIESEN Beitrag werfen – mit der kostenlosen Extension SMTP Pro kann man die Mail-Queue von Magento 1.9 komfortabel und ohne Code-Änderung umgehen.

Genutzt in Magento Version 1.9 Kommentare? Ergänzungen? Hinweise? Gerne!

Published by Covos

Seit 2009 arbeite ich nun intensiv mit Magento. Begonnen habe ich mit der Erstellung und dem Betrieb von B2C-Shops. Ausgeweitet wurde dies durch meine Tätigkeit im Logistik-Sektor. Hieraus entstanden erste spezialisierte B2E-Systeme. Heute arbeite ich tag-täglich mit spannenden B2C-, B2B- und B2E-Projekten und berichte in diesem Blog über Herausforderungen und gebe Insider-Tipps.

13 comments on “Magento 1.9 – Bestell eMails sofort versenden und nicht über Cron”

    1. hier das selbe problem. leider nicht ständig, sondern nur sporadisch/vereinzelt.
      absolut zum mäuse-melken……

  1. Hi bei meiner Installation von Magento 1.9.3.6 existiert der 2. Pfad nicht. Der Pfad existiert: app/code/core/Mage/Sales/Model/Order.php
    der nicht: app/code/local/Mage/Sales/Model/Order.php

    bei mir ist drin:
    app/code/local/smartwave
    und
    app/code/local/Magegiant

    muss ich jetzt den Sales Ordner wo anders suchen?

    Danke für die Antwort. lg Marcel

  2. Thank you for those tricks,
    Indeed the client receive the confirmation mail but the admin do not
    Can you help please

    1. Hi!
      This can have different reasons. One of them is that your mail hoster is not allowing receiving mails from the “fake” smtp-server which Magento is using in standard. So you’ll need to use a real smtp-server. Please refer to my article about SMTP-pro extension in this blog. With this you can log all mails and see whether the admin mails are actually sent or not. This will bring you further finding the problem.
      Regards!

      1. Thank you for the response,
        I install the extension, but always the same problem for admin,
        Indeed the client receive its confirmation, and the contact mail is sent too
        Can you help me please
        thank you

Leave a Reply

Your email address will not be published. Required fields are marked *