0

我注意到以下错误:

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

有人有同样的问题或解决方案吗?我不明白为什么magento会为此事件发送电子邮件...

4

1 回答 1

1

类:Mage_Adminhtml_CustomerController扩展Mage_Adminhtml_Controller_Action

方法: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);
                }
            }
于 2012-05-25T09:18:41.560 回答