Magento 1.9에서 주문 이메일은 대기열을 통해 전송되는 반면 송장 이메일은 직접 전송되는 이유는 무엇입니까?

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

문제

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();
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top