/** * send * * @param ResetPassword $resetPassword * @param User $user * @param array $mailConfig * * @return mixed */ public function sendRestPasswordEmail(ResetPassword $resetPassword, User $user, $mailConfig) { $toEmail = $user->getEmail(); $fromEmail = $mailConfig['fromEmail']; $fromName = $mailConfig['fromName']; $subject = $mailConfig['subject']; $bodyTemplate = $mailConfig['body']; //Ignore blank emails if (!trim($toEmail)) { return; } $vars = ['name' => '', 'userId' => $user->getId(), 'url' => 'https://' . $_SERVER['HTTP_HOST'] . '/reset-password?fromPasswordResetEmail=1&id=' . $resetPassword->getResetId() . '&key=' . $resetPassword->getHashKey()]; foreach ($vars as $name => $value) { $bodyTemplate = str_replace('__' . $name . '__', $value, $bodyTemplate); // Handle BC $bodyTemplate = str_replace('{' . $name . '}', $value, $bodyTemplate); } try { $html = new MimePart($bodyTemplate); $html->type = "text/html"; $body = new MimeMessage(); $body->setParts([$html]); $message = new Message(); $message->setBody($body)->setFrom($fromEmail, $fromName)->setSubject($subject); foreach (explode(',', $toEmail) as $email) { $message->addTo(trim($email)); } $transport = new \Zend\Mail\Transport\Sendmail(); $transport->send($message); } catch (InvalidArgumentException $e) { // nothing } }
/** * Handle Post for Plugin * * @param ResetPasswordForm $form * @param $instanceConfig * * @return null|string */ protected function handlePost(ResetPasswordForm $form, $instanceConfig) { $resetPw = new ResetPassword(); $form->setInputFilter($resetPw->getInputFilter()); $form->setData($this->getRequest()->getPost()); if (!$form->isValid()) { return; } $formData = $form->getData(); $userId = $formData['userId']; $user = $this->rcmUserManager->buildNewUser(); $user->setUsername($userId); $result = $this->rcmUserManager->readUser($user); if (!$result->isSuccess()) { return; } $user = $result->getUser(); if (!$user->getEmail()) { return; } $resetPw->setUserId($user->getId()); $this->entityMgr->persist($resetPw); $this->entityMgr->flush(); $this->mailer->sendRestPasswordEmail($resetPw, $user, $instanceConfig['prospectEmail']); return; }
/** * @param $resetPw * @param $userId * @param $userEmail * @param $instanceConfig */ protected function sendEmail(ResetPassword $resetPw, $userId, $userEmail, $instanceConfig) { try { $this->templateMailer->sendEmailTemplateFromConfigArray($userEmail, $instanceConfig['prospectEmail'], ['name' => '', 'userId' => $userId, 'url' => 'https://' . $_SERVER['HTTP_HOST'] . '/reset-password?id=' . $resetPw->getResetId() . '&key=' . $resetPw->getHashKey()]); } catch (InvalidArgumentException $e) { // Do nothing } }