All other emails appear to be sending out correctly except for when a Customer is trying to reset their password.
The reset password link email is not sending at all.
It also is not sending the reset password link email if I go into the backend of Magento as an admin. However, just changing the password manually does work.
I have looked at what other posts (including this one: https://community.magento.com/t5/Technical-Issues/Magento-1-9-2-2-does-not-send-email-for-user-regis... ) have suggested and checked various places for possible overwrites of the code, concentrating on a few likely suspects: register.phtml , resetforgottenpassword.phtml, forgotpassword.phtml, and customer.xml
The theme the site uses does have a register.phtml override located in app/design/frontend/mytheme/default/template/persistent/customer/form/register.phtml but it does include
<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
as other posts are saying it should.
The theme does not have overrides for
app/design/frontend/mytheme/default/template/customer/form/register.phtml
app/design/frontend/mytheme/default/template/customer/form/forgotpassword.phtml
app/design/frontend/mytheme/default/layout/customer.xml
The file at
app/design/frontend/base/default/template/persistent/customer/form/register.phtml does contain this line
<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
Which is correct according to other posts
The file at
app/design/frontend/base/default/layout/customer.xml contains this:
</customer_account_forgotpassword> <customer_account_changeforgotten translate="label"> <label>Reset a Password</label> <remove name="right"/> <remove name="left"/> <reference name="head"> <action module="customer" translate="title" method="setTitle"> <title>Reset a Password</title> </action> </reference> <reference name="root"> <action method="setTemplate"> <template>page/1column.phtml</template> </action> <action module="customer" translate="title" method="setHeaderTitle"> <title>Reset a Password</title> </action> </reference> <reference name="content"> <block name="changeForgottenPassword" template="customer/form/resetforgottenpassword.phtml" type="customer/account_changeforgotten"/> </reference> </customer_account_changeforgotten>
Which is correct according to other posts
The file at
app/design/frontend/base/default/template/customer/form/resetforgottenpassword.phtml does contain
<form action="<?php echo $this->getUrl('*/*/resetpasswordpost'); ?>" method="post" id="form-validate">
Which is correct according to other posts
But when i get to
app/design/frontend/base/default/template/customer/form/forgotpassword.phtml
This code line is here:
<form action="<?php echo $this->getUrl('*/*/forgotpasswordpost') ?>" method="post" id="form-validate">
but other posts says it should be
<form action="<?php echo $this->getUrl('*/*/resetpasswordpost'); ?>" method="post" id="form-validate">
When i try to change this code to the same as the code in resetforgottonpassword.phtml, it still doesn;t send the email and throws back an error message to the effect of "The reset link has expired" So, I'm not sure if this is the problem.
The error logs are not giving me any information about this problem, and as far as I can tell the cron job is working correctly. The email senders for the site seem to be set up correctly and functioning except in this regard.
The site is on CE 1.9.2.4
I'm not sure what else i should be checking.
Any ideas of what I am missing?
Hi @JenniferShany,
First, let me say that your post is a very good example of how to document a post in the Magento Forums to get help from the community.
That being said, I see that you reviewed the most frequent problems related to the "Forgot Password" transactional email.
As a first recommendation, I would say that you should check the values in the following admin panel section:
System > Configuration > Advanced > Admin > Admin User Emails
There you can find all the system configs from Magento related to the "Forgot Password" email. My first thought is that there might be a problem related to the transactional email selected for the "Forgot Password" email (there could be a custom email selected and that custom email template could be missing in the codebase).
Please keep us updated in the forums.
Best regards.
Gabriel
Thank you for the kind words!
I went to
System > Configuration > Advanced > Admin > Admin User Emails
as you suggested. The values look to be normal.
Forgot Password Email Template: Forgot Admin Password (Default Template from Locale)
Forgot Password Email Sender: General Contact
Recovery Link Expiration Period (days): 1
The email assigned to be the General Contact seems to be working for other emails. The template chosen is a default one, not custom.
Thank you very much for the suggestion, but are there any other possibilities that you can think of?
Hi @JenniferShany,
I see. Here is my second suggestion: The 99% of the times that happens the problem is related to the form_key.
You mentioned that you have seen the form_key in the templates, however, could you please check that the hidden input exists in the page? You can check that using Firebug or Chrome Developer Tools.
Sometimes it happens that the template that is applying to the page is not the one you think. You can confirm what template is applying by simply enabling the template hints.
Best regards.
Gabriel
Since upgrading to 1.9.2.2, it looks that something crashed in mail scripts, since Magento 1.9.2.2 cannot write registration and reset password e-mails on the database (tables core_email_queue and core_email_queue_recipients).
I apologize for the long delay! I thought I had replied to this last Monday, but apparently it didn't go through.
I went and checked the Forgot Password page with the template hints activated. The template looks to be the correct one.
frontend/base/default/template/customer/form/forgotpassword.phtml
I went and looked with the developer tools in Chrome to see if i could find a hidden input. I could not. So i went and looked at the code itself for that file, and its not there either.
Is this the hidden input i need to add?
<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
Is there a specific place in need to put it other than in between form tags?
I'm sorry to be asking potentially stupid questions, but I don't have a testing version of the site, only production. So I'm a little loathe to change code willy nilly.
Thank you again for all of the help.
Hi
Just wondering if this has been resolved? As I am running across the same issue with the same Magento Version.
Thanks.
I had been working on the same problem for days and had done everything that had been suggested in this post. So I managed to fix my issue by leaving the default forgotternpassword.phtml unchanged so it read as:-
<form action="<?php echo $this->getUrl('*/*/forgotpasswordpost') ?>" method="post" id="form-validate">
I then created a new transactional email in Magento Admin system>transactional emails>Add New Template. When creating the new template I selected load default template for Forgotten Password and then give the template a new name and saved. I then set this template to be the new template for Forgotten password in Magento Admin as follows: System>Configuration>Advanced>Admin and then under Admin User Emails change the Forgot Password Email Template to the new one you have created.
This worked for me, hope it works for you
Thanks ianto! That solved the problem for me! What a relief!
This also helped solve it for me.
Thanks for your post.