ฉันทดสอบมันในการติดตั้ง 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()ซึ่งในที่สุดเรียกmail()ฟังก์ชันPHP โดยตรง:
$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(โดยค่าเริ่มต้น) ดังนั้นจึงไม่ใช่ตัวเลข แต่ถ้าเลือกเทมเพลตอีเมลที่กำหนดเองมันจะเป็นตัวเลขดังนั้นบางทีอีเมลนั้นจะเข้าคิว แต่ฉันไม่ได้ทดสอบ