private function resetPasswordNotification(Entity\Users $userEntity, $shadowPassword, $shadowToken)
{
$config = $this->app['config'];
$flash = $this->app['logger.flash'];
$mailer = $this->app['mailer'];
$logger = $this->app['logger.system'];
$twig = $this->app['twig'];
$urlGenerator = $this->app['url_generator'];
$shadowLink = $urlGenerator->generate('resetpassword', ['token' => $shadowToken], UrlGeneratorInterface::ABSOLUTE_URL);
// Compile the email with the shadow password and reset link.
$mailHtml = $twig->render('@bolt/mail/passwordreset.twig', ['user' => $userEntity, 'shadowpassword' => $shadowPassword, 'shadowtoken' => $shadowToken, 'shadowvalidity' => Carbon::now()->addHours(2)->format('Y-m-d H:i:s'), 'shadowlink' => $shadowLink]);
$subject = sprintf('[ Bolt / %s ] Password reset.', $config->get('general/sitename'));
$name = $config->get('general/mailoptions/senderName', $config->get('general/sitename'));
$email = $config->get('general/mailoptions/senderMail', $userEntity->getEmail());
$from = [$email => $name];
$message = $mailer->createMessage('message')->setSubject($subject)->setFrom($from)->setReplyTo($from)->setTo([$userEntity->getEmail() => $userEntity->getDisplayname()])->setBody(strip_tags($mailHtml))->addPart($mailHtml, 'text/html');
$failed = true;
$failedRecipients = [];
try {
$recipients = $mailer->send($message, $failedRecipients);
// Try and send immediately
$this->app['swiftmailer.spooltransport']->getSpool()->flushQueue($this->app['swiftmailer.transport']);
if ($recipients) {
$logger->info("Password request sent to '" . $userEntity->getDisplayname() . "'.", ['event' => 'authentication']);
$failed = false;
}
} catch (\Exception $e) {
// Notify below
}
if ($failed) {
$logger->error("Failed to send password request sent to '" . $userEntity['displayname'] . "'.", ['event' => 'authentication']);
$flash->error(Trans::__('general.phrase.error-send-password-request'));
}
}