في Magento 1.9، لماذا يتم إرسال رسائل البريد الإلكتروني للطلب عبر قائمة الانتظار، بينما يتم إرسال رسائل البريد الإلكتروني الخاصة بالفاتورة مباشرة؟
-
29-09-2020 - |
سؤال
في Magento 1.9، لماذا يتم إرسال رسائل البريد الإلكتروني للطلب عبر قائمة الانتظار، بينما يتم إرسال رسائل البريد الإلكتروني الخاصة بالفاتورة مباشرة؟لقد تحققت من رمز الطلب والفاتورة، و order-sendNewOrderEmail
يستخدم قائمة الانتظار، في حين invoice->sendEmail()
يتخطى ذلك تماما.إنه يجعل إرسال البريد الإلكتروني للطلب بعد إرسال الفاتورة عبر البريد الإلكتروني بدلاً من إرساله قبل ذلك في حالة الموافقة على الطلب تلقائيًا!
المحلول
يتم إرسال الطلبات بالبريد الإلكتروني باستخدام قائمة الانتظار لأسباب مختلفة:
- تجنب تباطؤ الواجهة الأمامية أثناء إرسال البريد الإلكتروني
- إعادة الإرسال عند الفشل
- تجنب الأخطاء عند الخروج / بعد الخروج
الحل 1 (أرسل البريد الإلكتروني للطلب على الفور):
إذا كنت ترغب في إرسال الطلب بالبريد الإلكتروني على الفور، فيمكنك التفكير في تجاوز Mage_Sales_Model_Order::queueNewOrderEmail()
الطريقة عن طريق ربط الأسطر التالية :
/** @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();
ل:
/** @var $emailQueue Mage_Core_Model_Email_Queue */
$mailer->send();
الحل 2 (إرسال الفواتير باستخدام قائمة الانتظار):
الحل المعاكس هو السماح للفواتير باستخدام قائمة الانتظار:
يجب عليك تجاوز Mage_Sales_Model_Order_Invoice::sendEmail
تغيير:
// 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();
ل:
// 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();