|
|
@@ -11,9 +11,10 @@ use App\Service\Mailer\Model\MailerModelInterface;
|
|
|
use App\Service\ServiceIterator\Mailer\BuilderIterator;
|
|
|
use App\Service\Utils\Environnement;
|
|
|
use App\Service\Utils\StringsUtils;
|
|
|
-use App\Enum\Message\ReportMessageSatusEnum;
|
|
|
+use App\Enum\Message\ReportMessageStatusEnum;
|
|
|
use Doctrine\Common\Collections\ArrayCollection;
|
|
|
use Doctrine\ORM\EntityManagerInterface;
|
|
|
+use Psr\Log\LoggerInterface;
|
|
|
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
|
|
|
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
|
|
|
use Symfony\Component\Mailer\MailerInterface;
|
|
|
@@ -31,7 +32,8 @@ class Mailer
|
|
|
private BuilderIterator $builderIterator,
|
|
|
private StringsUtils $stringsUtils,
|
|
|
private EntityManagerInterface $entityManager,
|
|
|
- private Environnement $environnement
|
|
|
+ private Environnement $environnement,
|
|
|
+ private LoggerInterface $logger
|
|
|
)
|
|
|
{
|
|
|
}
|
|
|
@@ -55,7 +57,7 @@ class Mailer
|
|
|
foreach ($emailsCollection as $email){
|
|
|
//si l'email n'a pas de destinataire, on ne l'envoi pas...
|
|
|
if(empty($email->getEmailRecipients())){
|
|
|
- $email->getEmailEntity()->setStatus(MessageStatusEnum::FAILED()->getValue());
|
|
|
+ $email->getEmailEntity()->setStatus(MessageStatusEnum::NO_RECIPIENT()->getValue());
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
@@ -64,6 +66,7 @@ class Mailer
|
|
|
|
|
|
//Persistance de l'entité Email
|
|
|
$this->persistEmailEntity($email);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
//Envoi du rapport
|
|
|
@@ -98,6 +101,9 @@ class Mailer
|
|
|
$email->getEmailEntity()->setStatus(MessageStatusEnum::SEND()->getValue());
|
|
|
$email->getEmailEntity()->setDateSent(new \DateTime('now'));
|
|
|
} catch (\Exception $e) {
|
|
|
+ $this->logger->error('Error while sending email');
|
|
|
+ $this->logger->error($e);
|
|
|
+
|
|
|
$email->getEmailEntity()->setStatus(MessageStatusEnum::FAILED()->getValue());
|
|
|
}
|
|
|
}
|
|
|
@@ -114,9 +120,9 @@ class Mailer
|
|
|
$emailRecipients = $email->getEmailRecipients();
|
|
|
/** @var EmailRecipient $emailRecipient */
|
|
|
foreach ($emailRecipients as $emailRecipient){
|
|
|
- if($emailRecipient->getSendStatus() === ReportMessageSatusEnum::MISSING()->getValue()){
|
|
|
+ if($emailRecipient->getSendStatus() === ReportMessageStatusEnum::MISSING()->getValue()){
|
|
|
$unDelivered[] = $emailRecipient;
|
|
|
- }else if($emailRecipient->getSendStatus() === ReportMessageSatusEnum::DELIVERED()->getValue()){
|
|
|
+ }else if($emailRecipient->getSendStatus() === ReportMessageStatusEnum::DELIVERED()->getValue()){
|
|
|
$delivered[] = $emailRecipient;
|
|
|
}
|
|
|
}
|
|
|
@@ -124,7 +130,7 @@ class Mailer
|
|
|
|
|
|
$templatedMail = (new TemplatedEmail())
|
|
|
->from($this->opentalentNoReplyEmailAddress)
|
|
|
- ->subject(sprintf('Rapport d\'envoie du message : %s', $emails->first()->getEmailEntity()->getAbout()))
|
|
|
+ ->subject(sprintf('Rapport d\'envoi du message : %s', $emails->first()->getEmailEntity()->getAbout()))
|
|
|
->htmlTemplate('@templates/emails/report.html.twig')
|
|
|
->context(
|
|
|
[
|
|
|
@@ -139,7 +145,8 @@ class Mailer
|
|
|
try {
|
|
|
$this->symfonyMailer->send($templatedMail);
|
|
|
} catch (TransportExceptionInterface $e) {
|
|
|
-
|
|
|
+ $this->logger->error('Error while sending report');
|
|
|
+ $this->logger->error($e);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -169,12 +176,12 @@ class Mailer
|
|
|
* @param ArrayCollection $emailsCollection
|
|
|
*/
|
|
|
public function reduceEmailsCollectionInPreproduction(ArrayCollection $emailsCollection): ArrayCollection {
|
|
|
- if($this->environnement->get(EnvironnementVarEnum::APP_ENV()->getValue()) === 'prod') return $emailsCollection;
|
|
|
-
|
|
|
- $startEmails = $emailsCollection->slice(0, 10);
|
|
|
- $endEmails = $emailsCollection->slice($emailsCollection->count() - 11, 10);
|
|
|
-
|
|
|
- return new ArrayCollection([...$startEmails, ...$endEmails]);
|
|
|
+ if($this->environnement->get(EnvironnementVarEnum::APP_ENV()->getValue()) !== 'prod') {
|
|
|
+ $startEmails = $emailsCollection->slice(0, 10);
|
|
|
+ $endEmails = $emailsCollection->slice($emailsCollection->count() - 11, 10);
|
|
|
+ return new ArrayCollection([...$startEmails, ...$endEmails]);
|
|
|
+ }
|
|
|
+ return $emailsCollection;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -183,7 +190,7 @@ class Mailer
|
|
|
*/
|
|
|
public function addHeaders(SymfonyEmail $symfonyMail, Email $email){
|
|
|
$symfonyMail->getHeaders()->addTextHeader('List-Unsubscribe','mailto:'.$email->getFrom().'?subject=désabonnement');
|
|
|
- $symfonyMail->getHeaders()->addTextHeader('X-ID-OT', $email->getEmailEntity()->getUniqueSendId());
|
|
|
+ $symfonyMail->getHeaders()->addTextHeader('X-ID-OT', $email->getEmailEntity()->getUuid()->toString());
|
|
|
}
|
|
|
|
|
|
/**
|