/** * @param UserInterface|User $user * @param string $subject * @param string $body */ public function sendToUser(User $user, $subject, $body) { if (!empty($subject) && !empty($body) && !empty($user->getEmail()) && !empty($user->getUsername())) { if ($this->preventMailMerge) { $subject = $subject . ' rand:' . rand(0, 10000); } $this->send($subject, $body, $user->getEmail(), $user->getUsername()); } }
/** * @param Request $request * @param User $user * @return RedirectResponse|Response */ public function sendMailAction(Request $request, User $user) { $journal = $this->get('ojs.journal_service')->getSelectedJournal(); $em = $this->getDoctrine()->getManager(); $data = []; $serializer = $this->get('serializer'); $session = $this->get('session'); if ($request->isMethod('POST')) { $mailData = $request->get('mail'); $mailer = $this->get('mailer'); $message = $mailer->createMessage()->setFrom($this->container->getParameter('system_email'))->setTo($user->getEmail())->setSubject($mailData['subject'])->setBody($mailData['body'])->setContentType('text/html'); $mailer->send($message); $session->getFlashBag()->add('success', $this->get('translator')->trans('Email sending succefully.')); $session->save(); return $this->redirect($this->get('router')->generate('ujr_show_users_ofjournal', ['journal_id' => $journal->getId()])); } /** @var QueryBuilder $qb */ $qb = $em->createQueryBuilder(); $qb->select('t')->from('OjsJournalBundle:MailTemplate', 't')->where($qb->expr()->orX($qb->expr()->isNull('t.journalId'), $qb->expr()->eq('t.journalId', ':journal')))->setParameter('journal', $journal->getId()); $templates = $qb->getQuery()->getResult(); $data['templates'] = $templates; $data['user'] = $user; $data['parameters'] = $request->query->all(); array_walk($data['parameters'], function (&$val) { $val = urldecode($val); }); $data['templateVars'] = json_encode(array_merge(array('journal' => json_decode($serializer->serialize($journal, 'json')), 'user' => json_decode($serializer->serialize($this->getUser(), 'json'))), $data['parameters'])); $yamlParser = new Yaml\Parser(); $defaultTemplates = $yamlParser->parse(file_get_contents($this->container->getParameter('kernel.root_dir') . '/../src/Ojs/JournalBundle/Resources/data/mailtemplates.yml')); $tplKey = $request->get('template'); $data['selectedTemplate'] = $tplKey ? isset($defaultTemplates[$tplKey]) ? json_encode($defaultTemplates[$tplKey]) : null : null; return $this->render('OjsJournalBundle:JournalRole:send_mail.html.twig', $data); }
/** * @param User $user * @param string $subject * @param string $body */ private function sendMail(User $user, $subject, $body) { $message = $this->mailer->createMessage(); $to = array($user->getEmail() => $user->getUsername()); $message = $message->setSubject($subject)->addFrom($this->mailSender, $this->mailSenderName)->setTo($to)->setBody($body, 'text/html'); $this->mailer->send($message); }