简体   繁体   English

如何限制向Magento中的客户发送订单电子邮件

[英]How to restrict sending order emails to customers in Magento

I have created one payment method and it's working fine. 我创建了一种付款方式,它运行正常。 When an order is placed, by default, an email is sent, but I want to prevent that only when my own payment method is used. 在下订单时,默认情况下会发送一封电子邮件,但我希望仅在使用我自己的付款方式时才阻止该订单。 I do not want an email to be sent when a user selects my payment method and clicks on the place an order button. 当用户选择我的付款方式并点击下place an order按钮时,我不希望发送电子邮件。

Which file, function or which event is used to send an email once user clicks on place an order button? 一旦用户点击下place an order按钮,哪个文件,功能或哪个事件用于发送电子邮件?

This event is triggered in Checkout/controllers/OnePageController/SuccessAction. 此事件在Checkout / controllers / OnePageController / SuccessAction中触发。 Mage::dispatchEvent('checkout_onepage_controller_success_action'); 法师:: dispatchEvent( 'checkout_onepage_controller_success_action'); //line 197 //第197行

I suggest please look for the files below and the methods 我建议请查看下面的文件和方法

/app/code/core/Mage/Checkout/controllers/OnepageController.php /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 /app/code/core/Mage/Checkout/Model/Type/Onepage.php

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

There are 2 files where your need to update. 您需要更新2个文件。

For onestepcheckout: \\app\\code\\core\\Mage\\Checkout\\Model\\Type\\Onepage.php 对于onestepcheckout: \\app\\code\\core\\Mage\\Checkout\\Model\\Type\\Onepage.php

Update public function saveOrder() 更新public function saveOrder()

Remove: $order->sendNewOrderEmail(); 删除: $order->sendNewOrderEmail();

Add: 加:

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

For multishippingcheckout: \\app\\code\\core\\Mage\\Checkout\\Model\\Type\\Multishipping.php 对于multishippingcheckout: \\app\\code\\core\\Mage\\Checkout\\Model\\Type\\Multishipping.php

Update public function createOrders() 更新公共function createOrders()

Remove: $order->sendNewOrderEmail(); 删除: $order->sendNewOrderEmail();

Add: 加:

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

Hope will help! 希望会有所帮助!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM