Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Magento 1.9.1.0 Order Confirmation Emails - Not Sending

Tags:

magento

I've recently upgraded to Magento CE 1.9.1.0 and our order confirmation emails are not being sent to customers or the employees here that are setup to receive notifications.

I checked the Email Logs and don't see the emails hitting the server at all.

Emails come through from the Contact Form, New User Account Signup and a few test scripts I created on the server. I made sure that Disable Email Communications was set to "No".

Any ideas? They worked great in 1.7.0.2 before we upgraded.

like image 248
John Deszell Avatar asked Dec 12 '14 19:12

John Deszell


2 Answers

Starting from Magento 1.9 the order confirmation emails are not sent during checkout anymore, instead they are sent with the Cron. To verify this works properly:

  • make sure your system Cron is up and running (you can check the Cron logs: /var/log/cron to verify that).

  • make sure Magento Cron is setup correctly and is running every some minutes. You should see something like this in the Crontab of your system:

    */5 * * * * /public_html/cron.sh

    This schedules a task to run cron.sh every five minute. (More reading)

There are good extensions like AOE Scheduler in Magento that help you to monitor and manage Cron jobs.


An alternative way to this is to disable the Cron for these kind of emails (order confirmation). To do this you can go to this path:

public_html/app/code/core/Mage/Sales/Model/Order.php

Copy that file and bring it to this path (if the path doesn't exist create it):

public_html/app/code/local/Mage/Sales/Model/Order.php

And then change this line:

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

To:

$mailer->send();

However I recommend spending some time to setup the Cron instead. I think if they wanted to use Cron for these emails it's for a reason.

like image 66
hatef Avatar answered Nov 16 '22 19:11

hatef


Just do a small change in order.php (public_html/app/code/core/Mage/Sales/Model/Order.php)

From

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

To

$mailer->send();
like image 14
Gulshan Kumar Avatar answered Nov 16 '22 19:11

Gulshan Kumar