33
44namespace StudioMitte \SentMails \EventListener ;
55
6+ use Psr \Log \LoggerAwareInterface ;
7+ use Psr \Log \LoggerAwareTrait ;
68use Symfony \Component \Mailer \Envelope ;
79use Symfony \Component \Mime \Address ;
810use Symfony \Component \Mime \Email ;
1315use TYPO3 \CMS \Core \Utility \GeneralUtility ;
1416use TYPO3 \CMS \Core \Utility \StringUtility ;
1517
16- class BeforeMailSentEventListener
18+ class BeforeMailSentEventListener implements LoggerAwareInterface
1719{
20+ use LoggerAwareTrait;
1821
1922 private array $ blindedConfiguration = [
2023 'dsn ' => '****** ' ,
@@ -26,36 +29,43 @@ class BeforeMailSentEventListener
2629
2730 public function __invoke (BeforeMailerSentMessageEvent $ event ): void
2831 {
29- /** @var Email $sentMessage */
30- $ sentMessage = $ event ->getMessage ();
31- /** @var Email $originalMessage */
32- $ originalMessage = $ event ->getMessage ();
32+ try {
33+ /** @var Email $sentMessage */
34+ $ sentMessage = $ event ->getMessage ();
35+ /** @var Email $originalMessage */
36+ $ originalMessage = $ event ->getMessage ();
3337
34- $ customId = StringUtility::getUniqueId ('mail_ ' );
38+ $ customId = StringUtility::getUniqueId ('mail_ ' );
3539
36- $ sentMessage ->getHeaders ()->addTextHeader ('X-SentMail_Custom ' , $ customId );
40+ $ sentMessage ->getHeaders ()->addTextHeader ('X-SentMail_Custom ' , $ customId );
3741
38- $ isReply = get_class ($ originalMessage ) === RawMessage::class;
42+ $ isReply = get_class ($ originalMessage ) === RawMessage::class;
3943
40- $ connection = GeneralUtility::makeInstance (ConnectionPool::class)->getConnectionForTable ('tx_sentmail_mail ' );
41- $ connection ->insert ('tx_sentmail_mail ' , [
42- 'crdate ' => time (),
43- 'subject ' => (string )($ isReply ? '' : $ originalMessage ->getHeaders ()->getHeaderBody ('Subject ' )),
44- 'sender ' => $ this ->convertAddresses ($ originalMessage ->getFrom ()),
45- 'receiver ' => $ this ->convertAddresses ( $ originalMessage ->getTo ()),
46- 'bcc ' => $ this ->convertAddresses ($ originalMessage ->getBcc ()),
47- 'cc ' => $ this ->convertAddresses ($ originalMessage ->getCc ()),
48- 'debug ' => '' ,
49- 'message_id ' => $ customId ,
50- 'message ' => $ sentMessage ->toString (),
51- 'original_message ' => $ originalMessage ->toString (),
52- 'envelope_original ' => serialize ($ event ->getEnvelope () ?: Envelope::create ($ originalMessage )),
53- 'internal_id ' => $ customId ,
54- 'email_serialized ' => $ originalMessage instanceof Email ? serialize ($ originalMessage ) : '' ,
55- 'settings ' => json_encode ($ this ->getSettings ()),
56- ]);
57- $ sentMessage ->getHeaders ()->remove ('X-SentMail_ID ' );
58- $ sentMessage ->getHeaders ()->addTextHeader ('X-SentMail_ID ' , $ connection ->lastInsertId ('tx_sentmail_mail ' ));
44+ $ connection = GeneralUtility::makeInstance (ConnectionPool::class)->getConnectionForTable ('tx_sentmail_mail ' );
45+ $ connection ->insert ('tx_sentmail_mail ' , [
46+ 'crdate ' => time (),
47+ 'subject ' => (string )($ isReply ? '' : $ originalMessage ->getHeaders ()->getHeaderBody ('Subject ' )),
48+ 'sender ' => $ this ->convertAddresses ($ originalMessage ->getFrom ()),
49+ 'receiver ' => $ this ->convertAddresses ( $ originalMessage ->getTo ()),
50+ 'bcc ' => $ this ->convertAddresses ($ originalMessage ->getBcc ()),
51+ 'cc ' => $ this ->convertAddresses ($ originalMessage ->getCc ()),
52+ 'debug ' => '' ,
53+ 'message_id ' => $ customId ,
54+ 'message ' => $ sentMessage ->toString (),
55+ 'original_message ' => $ originalMessage ->toString (),
56+ 'envelope_original ' => serialize ($ event ->getEnvelope () ?: Envelope::create ($ originalMessage )),
57+ 'internal_id ' => $ customId ,
58+ 'email_serialized ' => $ originalMessage instanceof Email ? serialize ($ originalMessage ) : '' ,
59+ 'settings ' => json_encode ($ this ->getSettings ()),
60+ ]);
61+ $ sentMessage ->getHeaders ()->remove ('X-SentMail_ID ' );
62+ $ sentMessage ->getHeaders ()->addTextHeader ('X-SentMail_ID ' , $ connection ->lastInsertId ('tx_sentmail_mail ' ));
63+
64+ } catch (\Throwable $ e ) {
65+ $ this ->logger ->warning ('[SentMails] Error during BeforeMailSentEventListener: ' , [
66+ $ e ->getMessage (),
67+ ]);
68+ }
5969 }
6070
6171 /**
0 commit comments