如何在magento中自动生成的电子邮件模板中发送密码重置链接

时间:2016-09-06 09:01:30

标签: magento hyperlink passwords reset

screenshot所示,在客户信息中,当从admin设置密码然后保存更改时,会向客户发送一封电子邮件。默认情况下,新密码和帐户链接将在电子邮件中发送。

我想问的是,是否可以在此电子邮件中发送密码重置链接?

我认为使用的模板是:

  

应用程序/区域/ EN_US /模板/电子邮件/ password_new.html

我尝试添加以下内容:

  

{{store url =“customer / account / resetpassword /”_query_id = $ customer.id _query_token = $ customer.rp_token}}

但我在前端收到错误:

  

您的密码重置链接已过期。

2 个答案:

答案 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();
}

要生成令牌并将其添加到密码重置来自管理员的电子邮件。