I think it would be better practice (and probably more secure) to send a link with userid and expiration date via jwt and force the user to choose their own password
https://jwt.io/
This would mean
- admin passwords are floating around in emails
- the user only had a limited time to action the email