/**
  * @return Zend_Mail
  * @throws Zend_Mail_Protocol_Exception
  */
 public static function getMail(Users_Model_User $user, $subject)
 {
     $file = CommunityID_Resources::getResourcePath('reminder_mail.txt');
     $emailTemplate = file_get_contents($file);
     $emailTemplate = str_replace('{userName}', $user->getFullName(), $emailTemplate);
     $currentUrl = Zend_OpenId::selfURL();
     preg_match('#(.*)/manageusers/sendreminder#', $currentUrl, $matches);
     $emailTemplate = str_replace('{registrationURL}', $matches[1] . '/register/eula?token=' . $user->token, $emailTemplate);
     // can't use $this->_config 'cause it's a static function
     $configEmail = Zend_Registry::get('config')->email;
     switch (strtolower($configEmail->transport)) {
         case 'smtp':
             Zend_Mail::setDefaultTransport(new Zend_Mail_Transport_Smtp($configEmail->host, $configEmail->toArray()));
             break;
         case 'mock':
             Zend_Mail::setDefaultTransport(new Zend_Mail_Transport_Mock());
             break;
         default:
             Zend_Mail::setDefaultTransport(new Zend_Mail_Transport_Sendmail());
     }
     $mail = new Zend_Mail('UTF-8');
     $mail->setBodyText($emailTemplate);
     $mail->setFrom($configEmail->supportemail);
     $mail->addTo($user->email);
     $mail->setSubject($subject);
     return $mail;
 }
 public function resetAction()
 {
     $users = new Users_Model_Users();
     $user = $users->getUserWithToken($this->_getParam('token'));
     if (!$user) {
         $this->_helper->FlashMessenger->addMessage($this->view->translate('Wrong Token'));
         $this->_redirect('');
         return;
     }
     $newPassword = $user->generateRandomPassword();
     $user->setClearPassword($newPassword);
     // reset token
     $user->token = Users_Model_User::generateToken();
     $user->save();
     $file = CommunityID_Resources::getResourcePath('passwordreset2_mail.txt');
     $emailTemplate = file_get_contents($file);
     $emailTemplate = str_replace('{userName}', $user->getFullName(), $emailTemplate);
     $emailTemplate = str_replace('{password}', $newPassword, $emailTemplate);
     $this->_sendMail($user->email, $this->view->translate('Community-ID password reset'), $emailTemplate);
     $this->_helper->FlashMessenger->addMessage($this->view->translate('You\'ll receive your new password via E-mail'));
     $this->_redirect('');
 }