|
- <?php
-
- namespace Lc\SovBundle\Notification;
-
- use Lc\SovBundle\Definition\SiteSettingDefinition;
- use Lc\SovBundle\Repository\Site\SiteStore;
- use Lc\SovBundle\Solver\Setting\SettingSolver;
- use Mailjet\MailjetSwiftMailer\SwiftMailer\MailjetTransport;
- use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
- use Symfony\Component\Mailer\MailerInterface;
- use Twig\Environment;
-
- class MailMailjetNotification
- {
- const SUBJECT = 'subject';
- const SUBJECT_PREFIX = 'subject-prefix';
- const TO_EMAIL = 'to-email';
- const COPY_TO = 'copy-to';
- const COPY_HIDDEN_TO = 'copy-hidden-to';
- const TO_NAME = 'to-name';
- const FROM_EMAIL = 'from-email';
- const FROM_NAME = 'from-name';
- const REPLY_TO = 'reply-to';
- const CONTENT_TEMPLATE = 'content-template';
- const CONTENT_DATA = 'content-data';
- const ATTACHMENT_DATA = 'attachment-data';
- const ATTACHMENT_FILENAME = 'attachment-filename';
- const ATTACHMENT_CONTENT_TYPE = 'attachment-content-type';
-
- protected MailjetTransport $transport;
- protected Environment $templating;
- protected ParameterBagInterface $parameterBag;
- protected SettingSolver $settingSolver;
- protected SiteStore $siteStore;
-
- public function __construct(
- MailjetTransport $mailjetTransport,
- Environment $templating,
- ParameterBagInterface $parameterBag,
- SettingSolver $settingSolver,
- SiteStore $siteStore
- ) {
- $this->transport = $mailjetTransport;
- $this->templating = $templating;
- $this->parameterBag = $parameterBag;
- $this->settingSolver = $settingSolver;
- $this->siteStore = $siteStore;
- }
-
- public function send($params = [])
- {
- $siteDefault = $this->siteStore->getOneDefault();
-
- $emailSubjectPrefix = (isset($params[self::SUBJECT_PREFIX]) && $params[self::SUBJECT_PREFIX] && strlen($params[self::SUBJECT_PREFIX]) > 0)
- ? $params[self::SUBJECT_PREFIX]
- : $this->settingSolver->getSettingValue(
- $siteDefault,
- SiteSettingDefinition::SETTING_EMAIL_SUBJECT_PREFIX
- );
-
- $emailFrom = (isset($params[self::FROM_EMAIL]) && $params[self::FROM_EMAIL] && strlen($params[self::FROM_EMAIL]) > 0)
- ? $params[self::FROM_EMAIL]
- : $this->settingSolver->getSettingValue(
- $siteDefault,
- SiteSettingDefinition::SETTING_EMAIL_FROM
- );
-
- $emailFromName = (isset($params[self::FROM_NAME]) && $params[self::FROM_NAME] && strlen($params[self::FROM_NAME]) > 0)
- ? $params[self::FROM_NAME]
- : $this->settingSolver->getSettingValue(
- $siteDefault,
- SiteSettingDefinition::SETTING_EMAIL_FROM_NAME
- );
-
- $message = new \Swift_Message($emailSubjectPrefix . $params[self::SUBJECT]);
-
- if ($this->parameterBag->get('mailjet.dev.redirect.active') == 1) {
- $message->addTo(
- $this->parameterBag->get('mailjet.dev.redirect.email'),
- isset($params[self::TO_NAME]) ?? null
- );
- } else {
- $message->addTo(
- $params[self::TO_EMAIL],
- isset($params[self::TO_NAME]) ?? null
- );
- }
-
- $contentData = [];
- if (isset($params[self::CONTENT_DATA])) {
- $contentData = $params[self::CONTENT_DATA];
- }
-
- $message->addFrom($emailFrom, $emailFromName)
- ->setBody(
- $this->templating->render($params[self::CONTENT_TEMPLATE] . '-html.html.twig', $contentData),
- 'text/html'
- )
- ->addPart($this->templating->render($params[self::CONTENT_TEMPLATE] . '-text.html.twig', $contentData));
-
- if (isset($params[self::COPY_TO]) && strlen($params[self::COPY_TO])) {
- $message->addCc($params[self::COPY_TO]);
- }
-
- if (isset($params[self::COPY_HIDDEN_TO]) && strlen($params[self::COPY_HIDDEN_TO])) {
- $message->addBcc($params[self::COPY_HIDDEN_TO]);
- }
-
- if (isset($params[self::REPLY_TO]) && strlen($params[self::REPLY_TO])) {
- $message->addReplyTo($params[self::REPLY_TO]);
- }
-
- if (isset($params[self::ATTACHMENT_DATA]) && isset($params[self::ATTACHMENT_FILENAME]) && isset($params[self::ATTACHMENT_CONTENT_TYPE])) {
- $message->attach(
- \Swift_Attachment::newInstance(
- $params[self::ATTACHMENT_DATA],
- $params[self::ATTACHMENT_FILENAME],
- $params[self::ATTACHMENT_CONTENT_TYPE]
- )
- );
- }
-
- // Classique (SMTP)
- /*$transport = (new \Swift_SmtpTransport('smtp-placedulocal.alwaysdata.net', 587, 'tls'))
- ->setUsername('contact@placedulocal.fr')
- ->setPassword('7sgd5x2BVStJ69');
- $mailer = new \Swift_Mailer($transport);
- return $mailer->send($message);*/
-
- // Mailjet
- return $this->transport->send($message);
- }
- }
|