Magento 1.9.1 - E-mails sendo enviados pela nova fila de e-mails?

9

De acordo com as notas de lançamento do Magento 1.9.1 :

todos os e-mails Magento (incluindo confirmação de pedidos e transações) agora estão na fila

No entanto, não consigo ver como estão sendo enfileirados os emails, exceto o novo pedido e os emails de atualização do pedido.

Em esta resposta você pode ver os apenas dois lugares que parecem usar a fila.

Estou perdendo algo óbvio que instanciaria a fila para emails como o formulário de contato POST Mage_Contacts_IndexController?

Não consigo ver nada, o que me faz pensar que as notas de versão estão erradas. Alguém me mostra o erro do meu jeito?

Ashley Schroder
fonte

Respostas:

2

Testei-o na instalação limpa do Magento 1.9.0.1 sem o trabalho cron de configuração e ele me enviou um email de contato. Portanto, não se trata de emails de contato na fila. E se você olhar para o código, verá o mesmo:

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

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

Em um nível mais profundo, chama 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 chama diretamente a mail()função PHP :

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

No Magento 1.9.1.0 foi adicionado

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

em Mage_Core_Model_Email_Template-> public function sendque deve ser definido em public function sendTransactional:

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

mas $templateIddeve ser igual a contacts_email_email_template(por padrão), para que não seja numérico. Mas se o modelo de email personalizado for escolhido, ele será numérico; portanto, talvez o email seja colocado na fila, mas eu não o testei.

Michael
fonte
Eu acho que o OP mencionou a versão 1.9.1.
precisa saber é o seguinte
Sinto muito, mas não tenho a instalação 1.9.1 (e não tenho tempo para instalá-la) e pensei que não havia muita diferença (mas claramente estava errado). Eu editei minha resposta, mas não a testei, para que um moderador possa excluir minha resposta se ela não for útil.
22615 Michael
Eu acho que o teste is_numeric é apenas para lidar com a restauração da fila no objeto de modelo depois de carregar um modelo personalizado. Ele ainda exige que a fila já esteja definida e não vejo nenhum lugar que esteja acontecendo, exceto nas funções de envio de e-mail do pedido.
Ashley Schroder