2016-09-06 125 views
0

电子邮件模板在screenshot所示,在客户信息当密码是由管理员设置,然后保存更改后,电子邮件是发送给客户。默认情况下,新密码和帐户链接将通过电子邮件发送。如何发送汽车密码重置链接产生在Magento

我想问的是,是否有可能发送密码的链接也重新设置此电子邮件吗?

我想使用的模板是:

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

我尝试添加以下内容:

{{商店网址= “客户/帐号/ resetpassword /” _query_id = $ customer.id _query_token = $ customer.rp_token}}

但我在前端得到错误:

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

回答

1

是的,你可以 - 您可以生成新的重置密码令牌&它设置为customerObject - 尝试像

/** @var $customer Mage_Customer_Model_Customer */ 
$customer = Mage::getModel('customer/customer') 
    ->setWebsiteId(Mage::app()->getStore()->getWebsiteId()) 
    ->loadByEmail("[email protected]"); //change the email 
if ($customer->getId()) { 
    try { 
     $newResetPasswordLinkToken = Mage::helper('customer')->generateResetPasswordLinkToken(); 
     $customer->changeResetPasswordLinkToken($newResetPasswordLinkToken); 
     $customer->sendPasswordResetConfirmationEmail(); 
    } catch (Exception $exception) { 
     Mage::log($exception); 
    } 
} 
+1

你好,我面临的问题与http://magento.stackexchange.com/questions/109149/password-reset-link-token-id-not-fetching –

+0

相同,我应该在哪里需要保持此代码? ..我尝试了很多次,但迄今为止没有任何工作。 –

0

所以看起来像重置令牌不产生由管理员生成的电子邮件。

我能够通过为app/code/core/Adminhtml/controllers/CustomerController.php文件创建控制器覆盖(根据这些指令http://inchoo.net/magento/overriding-magento-blocks-models-helpers-and-controllers/ - Adminhtml控制器覆盖部分)来修复1.9.1.0中的此问题。

saveAction方法复制到覆盖。

里面saveAction方法,寻找的周围线351(原始文件)代码块。

if (!empty($data['account']['new_password'])) { 
    $newPassword = $data['account']['new_password']; 
    if ($newPassword == 'auto') { 
     $newPassword = $customer->generatePassword(); 
    } 
    $customer->changePassword($newPassword); 
    $customer->sendPasswordReminderEmail(); 
} 

更改此块

if (!empty($data['account']['new_password'])) { 
    $newPassword = $data['account']['new_password']; 
    if ($newPassword == 'auto') { 
     // no token generated 
     //~ $newPassword = $customer->generatePassword(); 
     $newResetPasswordLinkToken = Mage::helper('admin')->generateResetPasswordLinkToken(); 
     $customer->changeResetPasswordLinkToken($newResetPasswordLinkToken); 
    } 
    $customer->changePassword($newPassword); 
    $customer->sendPasswordReminderEmail(); 
} 

若要生成并增加新的管理员密码重置邮件令牌。