Magento:核心在客户保存后发送欢迎邮件

时间:2012-05-24 14:29:20

标签: email magento admin backend

我注意到以下错误:

当我使用admin后端向客户添加地址时,或者如果我更改地址并保存客户,Magento Costumer AccountController会向更新的客户发送标准电子邮件。使用的电子邮件模板是客户事件“已确认”的模板。这总是在我更新客户时发生。

有人有同样的问题或解决方案吗?我无法理解为什么magento会为此活动发送电子邮件......

1 个答案:

答案 0 :(得分:1)

分类:Mage_Adminhtml_CustomerController扩展Mage_Adminhtml_Controller_Action

Methode:saveAction()

解决方案:这是旧版本的核心错误。保存客户后发送邮件的条件使用isset($sendPassToEmail)。但是如果你注意到,sendPassToEmail变量总是被设置并且值为true或false。由于isset()条件始终为真,并且每次保存客户时都会发送电子邮件。

...

            $sendPassToEmail = false;
            // force new customer active
            if ($isNewCustomer) {
                $customer->setPassword($data['account']['password']);
                $customer->setForceConfirmed(true);
                if ($customer->getPassword() == 'auto') {
                    $sendPassToEmail = true;
                    $customer->setPassword($customer->generatePassword());
                }
            }

            Mage::dispatchEvent('adminhtml_customer_prepare_save', array(
                'customer'  => $customer,
                'request'   => $this->getRequest()
            ));

            $customer->save();

            // send welcome email
            if ($customer->getWebsiteId() && (!empty($data['account']['sendemail']) || isset($sendPassToEmail))) {
                $storeId = $customer->getSendemailStoreId();
                if ($isNewCustomer) {
                    $customer->sendNewAccountEmail('registered', '', $storeId);
                }
                // confirm not confirmed customer
                else if ((!$customer->getConfirmation())) {
                    $customer->sendNewAccountEmail('confirmed', '', $storeId);
                }
            }
相关问题