Добрый день.
Возьмите за основу описанные в
этой статье действия.
Думаю, что добавить информацию в письмо для пользователя не составит для Вас большого труда.
p.s. Для генерации пароля можно использовать те же методы, что и для генерации токена (generateRandomString()).