في 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