{"id":985,"date":"2015-05-29T16:51:06","date_gmt":"2015-05-29T14:51:06","guid":{"rendered":"http:\/\/www.h-hennes.fr\/blog\/?p=985"},"modified":"2015-05-29T16:52:19","modified_gmt":"2015-05-29T14:52:19","slug":"magento-email-queue-non-envoyee","status":"publish","type":"post","link":"https:\/\/www.h-hennes.fr\/blog\/2015\/05\/29\/magento-email-queue-non-envoyee\/","title":{"rendered":"Magento : email queue non envoy\u00e9e"},"content":{"rendered":"<p>J&rsquo;ai rencontr\u00e9 r\u00e9cemment un probl\u00e8me avec l&rsquo;envoi des emails de confirmation de commande sur magento version 1.9.0.1.<br \/>\nContrairement \u00e0 de plus anciennes versions de magento (et c&rsquo;est mieux ainsi \ud83d\ude42 ), les emails ne sont plus envoy\u00e9s directement apr\u00e8s le passage d&rsquo;une commande.<\/p>\n<p>Ils sont stock\u00e9s dans la table <strong>core_email_queue<\/strong> .<\/p>\n<p>Puis il sont envoy\u00e9s 100 par 100 via la t\u00e2che cron <strong>core_email_queue_send_all<\/strong> toutes les minutes.<\/p>\n<p>Sur le serveur h\u00e9bergeant le site Magento ( dans un environnement chroot\u00e9) , cette t\u00e2che cron ne fonctionnait pas et le fichier exception.log \u00e9tait remplis de messages de ce type :<\/p>\n<pre lang=\"php\" escaped=\"true\">exception 'Zend_Mail_Transport_Exception' with message 'Unable to send mail. ' in \/www\/lib\/Zend\/Mail\/Transport\/Sendmail.php:137\r\nStack trace:\r\n#0 \/www\/lib\/Zend\/Mail\/Transport\/Abstract.php(348): Zend_Mail_Transport_Sendmail-&gt;_sendMail()\r\n#1 \/www\/lib\/Zend\/Mail.php(1194): Zend_Mail_Transport_Abstract-&gt;send(Object(Zend_Mail))\r\n#2 \/www\/app\/code\/core\/Mage\/Core\/Model\/Email\/Queue.php(241): Zend_Mail-&gt;send()\r\n#3 [internal function]: Mage_Core_Model_Email_Queue-&gt;send(Object(Mage_Cron_Model_Schedule))\r\n#4 \/www\/app\/code\/core\/Mage\/Cron\/Model\/Observer.php(325): call_user_func_array(Array, Array)\r\n#5 \/www\/app\/code\/core\/Mage\/Cron\/Model\/Observer.php(72): Mage_Cron_Model_Observer-&gt;_processJob(Object(Mage_Cron_Model_Schedule), Object(Mage_Core_Model_Config_Element))\r\n#6 \/www\/app\/code\/core\/Mage\/Core\/Model\/App.php(1338): Mage_Cron_Model_Observer-&gt;dispatch(Object(Varien_Event_Observer))\r\n#7 \/www\/app\/code\/core\/Mage\/Core\/Model\/App.php(1317): Mage_Core_Model_App-&gt;_callObserverMethod(Object(Mage_Cron_Model_Observer), 'dispatch', Object(Varien_Event_Observer))\r\n#8 \/www\/app\/Mage.php(448): Mage_Core_Model_App-&gt;dispatchEvent('default', Array)\r\n#9 \/www\/cron.php(77): Mage::dispatchEvent('default')\r\n#10 {main}\r\n<\/pre>\n<p>En ex\u00e9cutant la fonction Mage_Core_Model_Email_Queue-&gt;send() depuis un controller front-office tout fonctionne.<br \/>\nMais via la ligne de commande ( PHP CLI) j&rsquo;obtiens l&rsquo;erreur suivante :<br \/>\n<strong>\/usr\/sbin\/mini_sendmail: unexpected response 501 to RCPT TO command<\/strong><\/p>\n<p>Pour corriger cette erreur, j&rsquo;ai cr\u00e9\u00e9 une copie locale du fichier <em>app\/code\/core\/Mage\/Email\/Queue.php<\/em> et modifi\u00e9 les lignes suivantes<br \/>\n<em>( \u00e0 partir de la ligne 210 dans le fichier )<\/em><\/p>\n<pre lang=\"php\" escaped=\"true\">$mailer = new Zend_Mail('utf-8');\r\nforeach ($message-&gt;getRecipients() as $recipient) {\r\n\u00a0\u00a0 \u00a0list($email, $name, $type) = $recipient;\r\n\u00a0\u00a0 \u00a0switch ($type) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0case self::EMAIL_TYPE_BCC:\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$mailer-&gt;addBcc($email, '=?utf-8?B?' . base64_encode($name) . '?=');\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0break;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0case self::EMAIL_TYPE_TO:\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0case self::EMAIL_TYPE_CC:\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0default:\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ Le nom du destinataire mail pose probl\u00e8me lors de l'envoi sur le nouveau serveur\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ \/usr\/sbin\/mini_sendmail: unexpected response 501 to RCPT TO command\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/$mailer-&gt;addTo($email, '=?utf-8?B?' . base64_encode($name) . '?=');\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$mailer-&gt;addTo($email);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0break;\r\n\u00a0\u00a0 \u00a0}\r\n}\r\n<\/pre>\n<p>Une fois la modification ci-dessus effectu\u00e9e, l&rsquo;envoi des emails via la t\u00e2che cron a fonctionn\u00e9 \u00e0 nouveau.<br \/>\nDe mon c\u00f4t\u00e9 l&rsquo;erreur \u00e9tait donc li\u00e9 \u00e0 un probl\u00e8me d&rsquo;encodage dans le nom du destinataire, cette fonctionnalit\u00e9 n&rsquo;\u00e9tant pas bloquante elle a donc \u00e9t\u00e9 ignor\u00e9e.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>J&rsquo;ai rencontr\u00e9 r\u00e9cemment un probl\u00e8me avec l&rsquo;envoi des emails de confirmation de commande sur magento version 1.9.0.1. Contrairement \u00e0 de plus anciennes versions de magento (et c&rsquo;est mieux ainsi \ud83d\ude42 ), les emails ne sont plus envoy\u00e9s directement apr\u00e8s le passage d&rsquo;une commande. Ils sont stock\u00e9s dans la table core_email_queue . Puis il sont envoy\u00e9s [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[246,254],"tags":[329,150,354,353],"class_list":["post-985","post","type-post","status-publish","format-standard","hentry","category-magento-2","category-serveurs-dedies","tag-email","tag-magento","tag-queue","tag-sendmail"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/985","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/comments?post=985"}],"version-history":[{"count":5,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/985\/revisions"}],"predecessor-version":[{"id":990,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/985\/revisions\/990"}],"wp:attachment":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/media?parent=985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/categories?post=985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/tags?post=985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}