Magento 1.9では、注文の電子メールがキューを介して送信されているのはなぜ、請求書の電子メールは直接送信されますか?
-
29-09-2020 - |
質問
Magento 1.9では、請求書Eメールが直接送信されている間、なぜキューを送信しているのはなぜですか。順序と請求書のコードを確認し、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();
.
to:
/** @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();
.
to:
// 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