Email đơn đặt hàng được gửi bằng cách sử dụng hàng đợi vì những lý do khác nhau:
- Tránh làm chậm giao diện trong khi gửi email
- Gửi lại thất bại
- Tránh sai sót khi thanh toán / hậu thanh toán
Giải pháp 1 (gửi email của đơn hàng ngay lập tức):
Nếu bạn muốn gửi email đặt hàng ngay lập tức, bạn có thể xem xét ghi đè Mage_Sales_Model_Order::queueNewOrderEmail()
phương thức bằng cách trộn các dòng sau:
/** @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();
đến:
/** @var $emailQueue Mage_Core_Model_Email_Queue */
$mailer->send();
Giải pháp 2 (gửi hóa đơn bằng cách sử dụng hàng đợi):
Giải pháp ngược lại là để hóa đơn sử dụng hàng đợi:
Bạn phải ghi đè Mage_Sales_Model_Order_Invoice::sendEmail
thay đổi:
// 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();
Đến:
// 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();