0

次のバグに気付きました。

管理者のバックエンドを使用して顧客に住所を追加するか、住所を変更して顧客を保存すると、Magento Costumer AccountController は更新された顧客に標準の電子メールを送信します。使用される電子メール テンプレートは、顧客イベント「確認済み」のテンプレートです。これは、顧客を更新するときに常に発生します。

誰かが同じ問題や解決策を持っていましたか? Magento がこのイベントのメールを送信する理由がわかりません...

4

1 に答える 1

1

クラス:Mage_Adminhtml_CustomerController拡張Mage_Adminhtml_Controller_Action

メソッド:saveAction()

解決策: これは古いバージョンのコア バグです。顧客保存後のメール送信条件はisset($sendPassToEmail). しかし、お気付きのように、sendPassToEmail変数は常に設定されており、値は true または false です。条件が常に true であるため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 に答える