You are right, you have a large safety hole in the circuit, but you have discovered the wrong hole!
Your problem is that you send it by email - the email is not secure.
How to guess a problem that should be statistically impossible if you use a password that is long enough. You might want to block people after they make mistakes 100 times.
One trick I've seen is asking the user for a Paypal or bank account number. Then you make several deposits for random amounts. Thus, they see deposits of, say, 34, 91 and 82 cents. Then they use these numbers as a password! Pretty smart huh?
source share