Magento 1.9では、注文の電子メールがキューを介して送信されているのはなぜ、請求書の電子メールは直接送信されますか?

magento.stackexchange https://magento.stackexchange.com/questions/103208

質問

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();
.

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top