In Magento 1.9, perché le e-mail dell'ordine sono inviate tramite la coda, mentre le e-mail della fattura vengono inviate direttamente?
-
29-09-2020 - |
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!
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();
.