Webspire

Administrační systém

nw7 v2.6, nw7/mailer v1.4 a nw7/mail-message v1

Pokračuje rozpad balíčků na menší - balíček nw7/mailer byl zrefaktorován (vytažení Message třídy a továrny do vlastního balíčku nw7/mail-message) - a nw7 mailery byly rozšířeny o možnost zachycení zprávy jinou službou před samotným odesláním.

Třídy \Inspire\NW7\Control\Mailer\Message\Message \Inspire\NW7\Control\Mailer\Message\IFactory byly ve verzi vytaženy z nw7/mailer-control balíčku do vlastního balíčku inspire/mail-message. Kvůli tomu se změnil namespace balčků na Inspire\NW7\MailMessage - zpětná kompatibilita je zajištěna skrz aliasy tříd.
Inspire/mail-message balíček navíc obsahuje třídy \Inspire\NW7\MailMessage\Delivery\MessageDelivery, sloužící jako obálku nad samotnou zprávou plus informacemi ohledně parametrů doručení zprávy a serializátor této obálky.

 

Interceptory mailerů

Došlo ke zjednodušení mailerů zpráv (mailerů ve smyslu skutečně rozesílačů e-mail - tzn. implementací rozhraní \Nette\Mail\IMailer) tím způsobem, že dodatečná logika v nich (tj. ošetření e-mailových hlaviček a zalogování odeslané zprávy do Tracy panelu) byla vytažena do tzv. interceptorů.

Interceptor je objekt, který vstupuje do procesu odeslání e-mailu - přesněji řečeno těsně před samotným odeslání (skrz PHP funkci mail nebo SMTP server) - a má možnost nějakým způsobem zpracovat či zachytit odesílanou zprávu. Návratová hodnout pak značí, zdali se má zpráva ve finále předat k samotnému odeslání na e-mail (true) a nebo již byla zpráva nějakým způsobem jinak zpracována (false) - například odeslána do RabbitMQ fronty k odeslání skrz jinou micro-service.
Samotná implementace podpory interceptorů v mailer se nachází v traitě \Inspire\NW7\Mail\TMessageInterceptorSupport, kterou používají obě implementace mailerů.

Díky tomu se mohla vytáhnout logika přepisu hlaviček a logování zpráv do Tracy přesunout do vlastních interceptorů:

  • \Inspire\NW7\Mail\Interceptor\DevelMessageInterceptor - na vývojovém prostředí přepisuje hlavičky odesílatelea příjemců tak, aby e-mail vždy došel vývojáři (logika, který dřív byla v traitě \Inspire\NW7\Mail\TDevelMessageFix; Samotná traita byla zachována, je však označena jako deprecated a v příští major verzi bude odstraněna)
  • \Inspire\NW7\Mail\Interceptor\MailerPanelInterceptor - do Tracy panelu loguje informace o odeslané zprávě

 

###message