vendor/nambu-private/pimcore-base/src/BaseBundle/Event/EmailDkimSignerEvent.php line 19

Open in your IDE?
  1. <?php
  2. namespace BaseBundle\Event;
  3. use Pimcore\Event\Model\MailEvent;
  4. use Pimcore\Log\ApplicationLogger;
  5. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  6. use Symfony\Component\Mime\Crypto\DkimSigner;
  7. class EmailDkimSignerEvent {
  8.     public function __construct(
  9.         private ApplicationLogger $logger,
  10.         private SessionInterface  $session,
  11.         private ?array            $dkimConfig null,
  12.     ) {
  13.     }
  14.     public function preSend(MailEvent $mailEvent): void {
  15.         if (!is_array($this->dkimConfig)) return;
  16.         $mail $mailEvent->getMail();
  17.         $signer = new DkimSigner(
  18.             file_get_contents(PIMCORE_PROJECT_ROOT.'/'.$this->dkimConfig["privateKey"]),
  19.             $this->dkimConfig["domain"],
  20.             $this->dkimConfig["selector"]
  21.         );
  22.         try {
  23.             $signedMail $signer->sign($mail);
  24.             $signedHeaders $signedMail->getHeaders();
  25.             $headers $mail->getHeaders();
  26.             $headers->add($signedHeaders->get("DKIM-Signature"));
  27.         } catch (\Exception $e) {
  28.             $this->logger->logException("could not sign message"$e);
  29.             $this->session->getFlashBag()->add('error'"could not sign message: ".$e->getMessage());
  30.         }
  31.     }
  32. }