次のバグに気付きました。
管理者のバックエンドを使用して顧客に住所を追加するか、住所を変更して顧客を保存すると、Magento Costumer AccountController は更新された顧客に標準の電子メールを送信します。使用される電子メール テンプレートは、顧客イベント「確認済み」のテンプレートです。これは、顧客を更新するときに常に発生します。
誰かが同じ問題や解決策を持っていましたか? Magento がこのイベントのメールを送信する理由がわかりません...
クラス: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);
}
}