/**
  * Forgot customer password action
  *
  * @return \Magento\Framework\Controller\Result\Redirect
  */
 public function execute()
 {
     /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
     $resultRedirect = $this->resultRedirectFactory->create();
     $email = (string) $this->getRequest()->getPost('email');
     if ($email) {
         if (!\Zend_Validate::is($email, 'EmailAddress')) {
             $this->session->setForgottenEmail($email);
             $this->messageManager->addErrorMessage(__('Please correct the email address.'));
             return $resultRedirect->setPath('*/*/forgotpassword');
         }
         try {
             $this->customerAccountManagement->initiatePasswordReset($email, AccountManagement::EMAIL_RESET);
         } catch (NoSuchEntityException $exception) {
             // Do nothing, we don't want anyone to use this action to determine which email accounts are registered.
         } catch (SecurityViolationException $exception) {
             $this->messageManager->addErrorMessage($exception->getMessage());
             return $resultRedirect->setPath('*/*/forgotpassword');
         } catch (\Exception $exception) {
             $this->messageManager->addExceptionMessage($exception, __('We\'re unable to send the password reset email.'));
             return $resultRedirect->setPath('*/*/forgotpassword');
         }
         $this->messageManager->addSuccessMessage($this->getSuccessMessage($email));
         return $resultRedirect->setPath('*/*/');
     } else {
         $this->messageManager->addErrorMessage(__('Please enter your email.'));
         return $resultRedirect->setPath('*/*/forgotpassword');
     }
 }