Magento 1.9.1 - Les e-mails envoyés par la nouvelle file d'attente de messagerie?

9

Selon les notes de publication de Magento 1.9.1 :

tous les e-mails Magento (y compris la confirmation de commande et les transactions) sont maintenant mis en file d'attente

Cependant, je ne vois pas comment les e-mails, à l'exception de la nouvelle commande et des e-mails de mise à jour de la commande, sont mis en file d'attente.

Dans cette réponse, vous pouvez voir les deux seuls endroits qui semblent utiliser la file d'attente.

Suis-je en train de manquer quelque chose d'évident qui aurait instancié la file d'attente pour les e-mails tels que le formulaire de contact POST dans Mage_Contacts_IndexController?

Je ne vois rien, ce qui me fait penser que les notes de version sont erronées, quelqu'un me montre s'il vous plaît l'erreur de mes manières?

Ashley Schroder
la source

Réponses:

2

Je l'ai testé sur une installation propre de Magento 1.9.0.1 sans tâche cron de configuration et il m'a envoyé un e-mail de contact. Ce ne sont donc pas des e-mails de contact en file d'attente. Et si vous regardez le code, vous verrez la même chose:

Mage_Contacts_IndexController-> public function postAction()-> sendTransactionalqui appelle:

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

Plus profondément, il appelle Zend_Mail-> public function send-> $transport->send($this);-> Zend_Mail_Transport_Abstract-> public function send-> $this->_sendMail();-> Zend_Mail_Transport_Sendmail-> public function _sendMail()qui appelle finalement directement la mail()fonction PHP :

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

Dans Magento 1.9.1.0, il est ajouté

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

dans Mage_Core_Model_Email_Template-> public function sendqui doit être défini dans public function sendTransactional:

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

mais $templateIddevrait être égal à contacts_email_email_template(par défaut) donc ce n'est pas numérique. Mais si un modèle d'e-mail personnalisé est choisi, il sera numérique, alors peut-être que l'e-mail sera mis en file d'attente, mais je ne l'ai pas testé.

Michael
la source
Je pense que OP a mentionné la version 1.9.1.
Joshua34
Je suis désolé mais je n'ai pas d'installation 1.9.1 (et je n'ai pas le temps de l'installer) et j'ai pensé qu'il n'y avait pas beaucoup de différence (mais clairement j'avais tort). J'ai modifié ma réponse mais je ne l'ai pas testée, donc un modérateur peut supprimer ma réponse si elle n'est pas utile.
michael
Je pense que le test is_numeric consiste simplement à gérer la restauration de la file d'attente dans l'objet modèle après le chargement d'un modèle personnalisé. Cela nécessite toujours que la file d'attente soit déjà définie, et je ne vois nulle part ce qui se passe, sauf dans les fonctions d'envoi d'e-mails de commande.
Ashley Schroder