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();
제휴하지 않습니다 magento.stackexchange