It sounds as though there are a few problems going on here. The only part that I see password encryption applied is on the registration page and the email password page. The login page and the profile update page are not encrypting the password. You will need to follow the solution recipe for these parts and ensure that you get these pages updated correctly.
The next issue is the email password page not sending the email. I can see that you have configured your email server and the port. Do you know if your host requires a username and password to make use of this email server? The code to send the message out looks good to me so you may need some additional info from your host regarding the email server and settings to use. Do you have Universal Email anywhere on your site that is working? If so the same settings should work on the email password page.
The next issue that I can see with things is that you have a mixed up system currently. In your db you have unencrypted and encrypted passwords. I know this because you say that you can login with the regular username and password but the login page is not encrypting the values. You will need to ensure that all of the passwords in the db are encrypted for this all to work. Once you get the email password page worked out you can use this page to update the passwords and make them encrypted.