You should use https for the "new password" section to avoid someone trying to intercept that new password.
Make sure that the link you generate does not encode the email in anyway. Or else, if the hacker finds that scheme, then they could easily use that to generate the link and reset passwords for other users. I have seen some people pass the email or username in query strings which is terrible. Make sure you do the rest on a POST request.
It is also good to ensure that the link expires within a certain time window. Also, make sure there are good security restrictions on the kinds of password your system accepts (minimum number of characters, alphanumerals, special characters etc.).
Ensure you are logging the IP address where the reset request initiated and the IP address where the password was reset.
Lastly, make sure the new password form does not have any XSS (Cross Site Scripting) bugs in it and you can also add more protection by having an anti-forgery token in the form to prevent XSRF (Cross Site Request Forgery). There is ASP.NET MVC's AntiForgeryToken() helper method.
The no limitations on email is a bit weird - it could be used to generate spam for others. You said it is getting addressed in next phase, so it may be ok if your app is low profile and used in a bit more trustable environment such as small intranet or within a small business community.
Even there it could become a big problem if the users have typos in their email and wait for password reset emails to arrive while the system is sending a password reset email to someone else. Now, if this "someone else" resets the password for your user, you are in trouble. So you may also want to re-confirm the email on that page but if the intent of the user who got the email is malicious, that could also be guessed. Given this, it is probably better to add the check to see if the user exists in the first phase itself - to be fully secure.