3 namespace Wallabag\UserBundle\Mailer
;
5 use Scheb\TwoFactorBundle\Model\Email\TwoFactorInterface
;
6 use Scheb\TwoFactorBundle\Mailer\AuthCodeMailerInterface
;
9 * Custom mailer for TwoFactorBundle email.
10 * It adds a custom template to the email so user won't get a lonely authentication code but a complete email.
12 class AuthCodeMailer
implements AuthCodeMailerInterface
22 * Twig to render the html's email.
24 * @var \Twig_Environment
29 * Sender email address.
43 * Support URL to report any bugs.
50 * Initialize the auth code mailer with the SwiftMailer object.
52 * @param \Swift_Mailer $mailer
53 * @param \Twig_Environment $twig
54 * @param string $senderEmail
55 * @param string $senderName
56 * @param string $supportUrl
58 public function __construct(\Swift_Mailer
$mailer, \Twig_Environment
$twig, $senderEmail, $senderName, $supportUrl)
60 $this->mailer
= $mailer;
62 $this->senderEmail
= $senderEmail;
63 $this->senderName
= $senderName;
64 $this->supportUrl
= $supportUrl;
68 * Send the auth code to the user via email.
70 * @param TwoFactorInterface $user
72 public function sendAuthCode(TwoFactorInterface
$user)
74 $template = $this->twig
->loadTemplate('@WallabagUserBundle/Resources/views/TwoFactor/email_auth_code.html.twig');
76 $subject = $template->renderBlock('subject', array());
77 $bodyHtml = $template->renderBlock('body_html', [
78 'user' => $user->getName(),
79 'code' => $user->getEmailAuthCode(),
80 'support' => $this->supportUrl
,
82 $bodyText = $template->renderBlock('body_text', [
83 'user' => $user->getName(),
84 'code' => $user->getEmailAuthCode(),
85 'support' => $this->supportUrl
,
88 $message = new \
Swift_Message();
90 ->setTo($user->getEmail())
91 ->setFrom($this->senderEmail
, $this->senderName
)
92 ->setSubject($subject)
93 ->setBody($bodyText, 'text/plain')
94 ->addPart($bodyHtml, 'text/html')
97 $this->mailer
->send($message);