如screenshot所示,在客户信息中,当从admin设置密码然后保存更改时,会向客户发送一封电子邮件。默认情况下,新密码和帐户链接将在电子邮件中发送。
我想问的是,是否可以在此电子邮件中发送密码重置链接?
我认为使用的模板是:
应用程序/区域/ EN_US /模板/电子邮件/ password_new.html
我尝试添加以下内容:
{{store url =“customer / account / resetpassword /”_query_id = $ customer.id _query_token = $ customer.rp_token}}
但我在前端收到错误:
您的密码重置链接已过期。
答案 0 :(得分:1)
是的,你可以 - 你可以生成新的重置密码令牌&将其设置为customerObject - 尝试类似
的内容/** @var $customer Mage_Customer_Model_Customer */
$customer = Mage::getModel('customer/customer')
->setWebsiteId(Mage::app()->getStore()->getWebsiteId())
->loadByEmail("customer@gmail.com"); //change the email
if ($customer->getId()) {
try {
$newResetPasswordLinkToken = Mage::helper('customer')->generateResetPasswordLinkToken();
$customer->changeResetPasswordLinkToken($newResetPasswordLinkToken);
$customer->sendPasswordResetConfirmationEmail();
} catch (Exception $exception) {
Mage::log($exception);
}
}
答案 1 :(得分:0)
因此看起来不会为管理员生成的电子邮件生成重置令牌。
我能够通过为{"%%hello%%":"world lo-rem","%%foo%%":"lorem "ipsum" dolor"}
文件创建控制器覆盖来修复1.9.1.0中的这一问题(根据这些说明http://inchoo.net/magento/overriding-magento-blocks-models-helpers-and-controllers/ - Adminhtml控制器覆盖部分)。
将app/code/core/Adminhtml/controllers/CustomerController.php
方法复制到覆盖。
在saveAction
方法内,在第351行(原始文件)周围查找此代码块。
saveAction
将此块更改为
if (!empty($data['account']['new_password'])) {
$newPassword = $data['account']['new_password'];
if ($newPassword == 'auto') {
$newPassword = $customer->generatePassword();
}
$customer->changePassword($newPassword);
$customer->sendPasswordReminderEmail();
}
要生成令牌并将其添加到密码重置来自管理员的电子邮件。