In Magento 1.9, perché le e-mail dell'ordine sono inviate tramite la coda, mentre le e-mail della fattura vengono inviate direttamente?

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

Domanda

In Magento 1.9, perché le e-mail dell'ordine sono inviate tramite la coda, mentre le e-mail della fattura vengono inviate direttamente?Ho controllato il codice per ordine e fattura, e il order-sendNewOrderEmail utilizza la coda, mentre invoice->sendEmail() lo salta completamente.Sta effettuando l'e-mail dell'ordine inviata dopo l'e-mail della fattura anziché prima nel caso in cui l'ordine sia approvato automaticamente!

È stato utile?

Soluzione

Ordini Email vengono inviati utilizzando la coda per motivi diversi:

    .
  • Evita il rallentamento della frontiera durante l'invio dell'email
  • Insenda su guasto
  • Evita errori sul checkout / post-checkout

Soluzione 1 (Invia immediatamente l'e-mail dell'ordine):

Se ti piace inviare l'e-mail dell'ordine Immediatamente puoi prendere in considerazione il prevalenza del metodo Mage_Sales_Model_Order::queueNewOrderEmail() indicando le seguenti righe:

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

A:

    /** @var $emailQueue Mage_Core_Model_Email_Queue */
    $mailer->send();
.

Soluzione 2 (Invia fatture usando la coda):

La soluzione opposta è quella di lasciare che le fatture usino la coda:

È necessario scavalcare il cambiamento 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();
.

A:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top