email = $email; $this->mailService = $mailService; $this->query = $query; $this->logger = $logger; } public function run() { try { /** @var User $user */ $user = $this->query->whereEmail($this->email)->one(); $token = TokenFactory::makeRecoveryToken($user->id); if (!$token) { return false; } $this->mailService->setViewParam('user', $user); $this->mailService->setViewParam('token', $token); if (!$this->mailService->run()) { return false; } return true; } catch (Exception $e) { $this->logger->log($e->getMessage(), Logger::LEVEL_ERROR); return false; } } }