src/Controller/MailerController.php line 58

Open in your IDE?
  1. <?php
  2. // src/Controller/MailerController.php
  3. namespace App\Controller;
  4. use App\Entity\Message;
  5. use App\Entity\ProcessTable;
  6. use App\Entity\SendingMessage;
  7. use App\Message\TousMails;
  8. use Symfony\Component\Mime\Email;
  9. use App\Repository\MessageRepository;
  10. use Symfony\Component\Process\Process;
  11. use App\Repository\ProcessTableRepository;
  12. use App\Repository\SendingMessageRepository;
  13. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\Mailer\MailerInterface;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Component\Console\Input\ArrayInput;
  18. use Symfony\Component\Routing\Annotation\Route;
  19. use Symfony\Component\HttpKernel\KernelInterface;
  20. use Symfony\Component\HttpFoundation\JsonResponse;
  21. use Symfony\Component\Console\Output\BufferedOutput;
  22. use Symfony\Component\HttpFoundation\StreamedResponse;
  23. use Symfony\Bundle\FrameworkBundle\Console\Application;
  24. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  25. use Symfony\Component\Process\Exception\ProcessFailedException;
  26. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  27. use Symfony\Component\Messenger\MessageBusInterface;
  28. class MailerController extends AbstractController
  29. {
  30.     private $messageRepository;
  31.     private $processTableRepository;
  32.     private $sendingMessageRepository;
  33.     private $mailer;
  34.     public function __construct(MessageRepository $messageRepository,ProcessTableRepository $processTableRepository SendingMessageRepository $sendingMessageRepositoryMailerInterface $mailer)
  35.     {
  36.         $this->messageRepository $messageRepository;
  37.         $this->processTableRepository $processTableRepository;
  38.         $this->sendingMessageRepository $sendingMessageRepository;
  39.         $this->mailer $mailer;
  40.     }
  41.     /**
  42.      * @Route("/countingMails",name="counting-mails")
  43.      */
  44.     public function countingMails()
  45.     {
  46.         $nbre $this->processTableRepository->findMails();
  47.         //dd($nbre['nbre']);
  48.         return new Response($nbre['nbre']);
  49.     }
  50.     /**
  51.      * @Route("/testemail/{testemail}", name="send-test-mail")
  52.      */
  53.     public function sendTestEmail$testemail)
  54.     {
  55.         $brouillon $this->messageRepository->findBrouillon();
  56.     
  57.         if(empty($brouillon)){
  58.             $this->addFlash(
  59.                     'warning',
  60.                     'Pas de lettre à envoyer. Il faut en créer une!'
  61.                     );
  62.             return $this->redirectToRoute('new');
  63.         }
  64.         $brouillon $brouillon[0];
  65.         $messageId $brouillon->getId();
  66.         
  67.         $email = (new TemplatedEmail())
  68.             ->from('contact@franceolive.com')
  69.             ->to($testemail)
  70.             //->cc('cc@example.com')
  71.             //->bcc('bcc@example.com')
  72.             ->replyTo('contact@franceolive.fr')
  73.             //->priority(Email::PRIORITY_HIGH)
  74.             ->subject(utf8_decode($brouillon->getTitre()))
  75.             ->text(utf8_decode($brouillon->getTexte()))
  76.             ->htmlTemplate('mailer/mail.html.twig')
  77.             ->context([
  78.                 'texte' => utf8_decode($brouillon->getTexte())
  79.             ])
  80.             ;
  81.         $this->mailer->send($email);
  82.         
  83.         $this->addFlash(
  84.                 'success',
  85.                 'Mail envoyé !'
  86.         );
  87.         return $this->redirectToRoute('home');
  88.     }
  89.     /**
  90.      * @Route("/sendmail/{mail}", name="send-mail")
  91.      */
  92.     public function sendEmail$mail)
  93.     {
  94.         $brouillon $this->messageRepository->findBrouillon();
  95.     
  96.         if(empty($brouillon)){
  97.             $this->addFlash(
  98.                     'warning',
  99.                     'Pas de lettre à envoyer. Il faut en créer une!'
  100.                     );
  101.             return $this->redirectToRoute('new');
  102.         }
  103.         $brouillon $brouillon[0];
  104.         $messageId $brouillon->getId();
  105.         
  106.         $email = (new TemplatedEmail())
  107.             ->from('contact@franceolive.com')
  108.             ->to($mail)
  109.             //->cc('cc@example.com')
  110.             //->bcc('bcc@example.com')
  111.             ->replyTo('contact@franceolive.fr')
  112.             
  113.             //->priority(Email::PRIORITY_HIGH)
  114.             ->subject(utf8_decode($brouillon->getTitre()))
  115.             ->text(utf8_decode($brouillon->getTexte()))
  116.             ->htmlTemplate('mailer/mail.html.twig')
  117.             ->context([
  118.                 'texte' => utf8_decode($brouillon->getTexte())
  119.             ])
  120.             ;
  121.         
  122.         $list_unsubscribe "<mailto: contact@franceolive.fr?subject=desinscription>";
  123.         $email->getHeaders()->addTextHeader'List-Unsubscribe'$list_unsubscribe );
  124.         
  125.         $this->mailer->send($email);
  126.        
  127.         return new Response("OK");
  128.     }
  129.     /**
  130.      * @Route("/gestion/testadresse", name="choix-message-test")
  131.      */
  132.    public function choixAdresseTest(Request $request,MessageRepository $messageRepository){
  133.     //existe-t-il un brouillon ?
  134.    $brouillon $messageRepository->findBrouillon();
  135.     
  136.     if(empty($brouillon)){
  137.         $this->addFlash(
  138.                 'warning',
  139.                 'Pas de lettre à envoyer. Il faut en créer une!'
  140.                 );
  141.         return $this->redirectToRoute('new');
  142.     }
  143.     $brouillon $brouillon[0];
  144.     $data = array();
  145.     $form $this->createFormBuilder($data)
  146.     ->add('email'EmailType::class)
  147.             ->getForm();
  148.     
  149.             if ($request->isMethod('POST')) {
  150.                 $form->handleRequest($request);
  151.                 $data $form->getData();
  152.                 $email $data['email'];
  153.                 return $this->redirectToRoute('send-test-mail',array(
  154.                         'testemail'=>$email
  155.                     ));
  156.             }
  157.         return $this->render('mailer/mailtest.html.twig',array(
  158.                 'form' => $form->createView()
  159.         ));
  160.     }
  161.     
  162.     /**
  163.      * @Route("/envoiATous",name="envoiATous")
  164.      *
  165.      */
  166.     public function envoiAtous(MessageBusInterface $messageBus): Response
  167.     {
  168.         //juste pour avoir le nombre de mails à envoyer
  169.         $s $this->sendingMessageRepository->find(1);
  170.         //dd($s);
  171.         $tabMail unserialize($s->getMailArray());
  172.         $total count($tabMail);
  173.         
  174.         //mise dans la queue du messenger
  175.         $message = new TousMails($total);
  176.         //dd($message);
  177.         $messageBus->dispatch($message);
  178.         
  179.         return $this->render('/lettre/envoiencours.html.twig',[
  180.                  'total'=> $total
  181.             ]);
  182.     }
  183.     
  184.     /**
  185.      * @Route("/envoifin",name="envoifin")
  186.      *
  187.      */
  188.     public function envoifin(): Response
  189.     {
  190.        
  191.         
  192.         return $this->render('/lettre/envoifin.html.twig',[
  193.                  //'total'=> count($tabMail)
  194.             ]);
  195.     }
  196. }