现在,所有Magento电子邮件(包括订单确认和交易邮件)都已排队
但是,我看不到如何将除新订单和订单更新电子邮件之外的其他电子邮件排队。
在此答案中,您只能看到似乎使用队列的两个位置。
我是否遗漏了一些明显的东西,例如电子邮件联系表POST in,实例化了队列Mage_Contacts_IndexController
?
我什么都看不到,这使我认为发行说明有误,请有人告诉我我的方式是否错误?
现在,所有Magento电子邮件(包括订单确认和交易邮件)都已排队
但是,我看不到如何将除新订单和订单更新电子邮件之外的其他电子邮件排队。
在此答案中,您只能看到似乎使用队列的两个位置。
我是否遗漏了一些明显的东西,例如电子邮件联系表POST in,实例化了队列Mage_Contacts_IndexController
?
我什么都看不到,这使我认为发行说明有误,请有人告诉我我的方式是否错误?
Answers:
我在干净的Magento 1.9.0.1安装中对其进行了测试,没有安装cron作业,它给我发送了联系电子邮件。因此,它不是将联系电子邮件排队。如果您看一下代码,将会看到相同的内容:
Mage_Contacts_IndexController
-> public function postAction()
-> sendTransactional
其中调用:
Mage_Core_Model_Email_Template
- > public function sendTransactional
- > public function send
- > $mail->send();
。
在更深层次上,它调用Zend_Mail
-> public function send
-> $transport->send($this);
-> Zend_Mail_Transport_Abstract
-> public function send
-> $this->_sendMail();
-> Zend_Mail_Transport_Sendmail
-> public function _sendMail()
,最终直接调用PHP mail()
函数:
$result = mail(
$this->recipients,
$this->_mail->getSubject(),
$this->body,
$this->header);
在Magento 1.9.1.0中已添加
if ($this->hasQueue() && $this->getQueue() instanceof Mage_Core_Model_Email_Queue) {
...
$emailQueue->addMessageToQueue();
在
Mage_Core_Model_Email_Template
-> public function send
中应在中设置public function sendTransactional
:
if (is_numeric($templateId)) {
$queue = $this->getQueue();
$this->load($templateId);
$this->setQueue($queue);
}
但$templateId
应等于contacts_email_email_template
(默认情况下),因此它不是数字。但是,如果选择了自定义电子邮件模板,则它将是数字形式,因此可能会将电子邮件排队,但我没有对其进行测试。