【问题标题】:How to restrict sending order emails to customers in Magento如何在 Magento 中限制向客户发送订单电子邮件
【发布时间】:2013-10-29 04:40:39
【问题描述】:

我创建了一种付款方式,它运行良好。下订单时,默认情况下会发送一封电子邮件,但我只想在使用我自己的付款方式时阻止这种情况。当用户选择我的付款方式并单击place an order 按钮时,我不希望发送电子邮件。

用户点击place an order按钮后,使用哪个文件、函数或哪个事件发送电子邮件?

【问题讨论】:

  • $orders ->getEmailSent() 你可以限制用户发送邮件。

标签: magento


【解决方案1】:

此事件在 Checkout/controllers/OnePageController/SuccessAction 中触发。 法师::dispatchEvent('checkout_onepage_controller_success_action'); //第197行

我建议请看下面的文件和方法

/app/code/core/Mage/Checkout/controllers/OnepageController.php

public function successAction(){...
   Mage::dispatchEvent('checkout_onepage_controller_success_action', array('order_ids' => array($lastOrderId))); ...

}

/app/code/core/Mage/Checkout/Model/Type/Onepage.php

public function saveOrder(){... 
   $order->sendNewOrderEmail(); ...
}

【讨论】:

    【解决方案2】:

    您需要更新 2 个文件。

    一次性结账:\app\code\core\Mage\Checkout\Model\Type\Onepage.php

    更新public function saveOrder()

    删除: $order->sendNewOrderEmail();

    添加:

    if($order->getPayment()->getMethod()!="YOUR_CUSTOM_PAYMENT_METHOD_NAME") {
        $order->sendNewOrderEmail();
    }
    

    多发结账:\app\code\core\Mage\Checkout\Model\Type\Multishipping.php

    更新公众function createOrders()

    删除: $order->sendNewOrderEmail();

    添加:

    if($order->getPayment()->getMethod()!="YOUR_CUSTOM_PAYMENT_METHOD_NAME") {
        $order->sendNewOrderEmail();
    }
    

    希望会有所帮助!

    【讨论】:

      猜你喜欢
      • 2017-08-08
      • 2017-08-19
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多