Magento 1.9.1: ¿los correos electrónicos que envía la nueva cola de correo electrónico?

9

De acuerdo con las notas de lanzamiento de Magento 1.9.1 :

Todos los correos electrónicos de Magento (incluida la confirmación de pedido y transaccional) ahora están en cola

Sin embargo, no puedo ver cómo se están poniendo en cola los correos electrónicos, excepto el nuevo pedido y los correos electrónicos de actualización del pedido.

En esta respuesta , puede ver los únicos dos lugares que parecen usar la cola.

¿Me estoy perdiendo algo obvio que haría que la cola se instanciara para correos electrónicos como el formulario de contacto POST Mage_Contacts_IndexController?

No puedo ver nada, lo que me hace pensar que las notas de la versión están equivocadas, ¿alguien me muestra el error de mis formas?

Ashley Schroder
fuente

Respuestas:

2

Lo probé en una instalación limpia de Magento 1.9.0.1 sin configurar el trabajo cron y me envió un correo electrónico de contacto. Por lo tanto, no se trata de correos electrónicos de contacto en cola. Y si miras el código, verás lo mismo:

Mage_Contacts_IndexController-> public function postAction()-> sendTransactionalque llama:

Mage_Core_Model_Email_Template-> public function sendTransactional-> public function send-> $mail->send();.

En un nivel más profundo, llama Zend_Mail-> public function send-> $transport->send($this);-> Zend_Mail_Transport_Abstract-> public function send-> $this->_sendMail();-> Zend_Mail_Transport_Sendmail-> public function _sendMail()que finalmente llama directamente a la mail()función PHP :

    $result = mail(
        $this->recipients,
        $this->_mail->getSubject(),
        $this->body,
        $this->header);

En Magento 1.9.1.0 se agrega

if ($this->hasQueue() && $this->getQueue() instanceof Mage_Core_Model_Email_Queue) {
...
$emailQueue->addMessageToQueue();

en Mage_Core_Model_Email_Template-> public function sendque debe establecerse en public function sendTransactional:

        if (is_numeric($templateId)) {
            $queue = $this->getQueue();
            $this->load($templateId);
            $this->setQueue($queue);
        }

pero $templateIddebería ser igual a contacts_email_email_template(por defecto) para que no sea numérico. Pero si se elige una plantilla de correo electrónico personalizada, será numérica, por lo que tal vez el correo electrónico se pondrá en cola, pero no lo probé.

Miguel
fuente
Creo que OP mencionó la versión 1.9.1.
Joshua34
Lo siento, pero no tengo la instalación 1.9.1 (y no tengo tiempo para instalarla) y pensé que no había mucha diferencia (pero claramente estaba equivocado). Edité mi respuesta pero no la probé para que algún moderador pueda eliminar mi respuesta si no es útil.
michael
Creo que la prueba is_numeric es solo para restaurar la cola en el objeto de la plantilla después de cargar una plantilla personalizada. Todavía requiere que la cola ya esté configurada, y no veo ningún lugar que esté sucediendo, excepto en las funciones de envío de correo electrónico de pedidos.
Ashley Schroder