我注意到以下错误:
当我使用管理后端向客户添加地址时,或者如果我更改地址并保存客户,Magento Costumer AccountController 会向更新后的客户发送标准电子邮件。使用的电子邮件模板是“已确认”客户事件的模板。当我更新客户时,总是会发生这种情况。
有人有同样的问题或解决方案吗?我不明白为什么magento会为此事件发送电子邮件...
类: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);
}
}