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!
Perfekt. Geht super 🙂
Magento 1.9.1.1 funkioniert super!
Dankeschön!! Funktioniert bei 1.9.4.3
Habe 2. Variante mit Code löschen gewählt mails werden trotzdem 2mal versendet.
Was mache ich falsch Magento 1.9.2.2
hier das selbe problem. leider nicht ständig, sondern nur sporadisch/vereinzelt.
absolut zum mäuse-melken……
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
wenn der local-Pfad nicht existiert, muss er angelegt werden, um die Core-Datei zu überschreiben.
Thank you for those tricks,
Indeed the client receive the confirmation mail but the admin do not
Can you help please
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!
Thank you for your quick response.
I will try it right now.
Best regards !
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
What kind of mails are not being sent / received by the admin? BCC-transactional mails? Or admin-passwords?
Hi Covos,
This is an issue after doing this setting Magento can sending order email twice two emails sent to the customer mailbox, how is fixed …?