Kompletni sablona pro email

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
MartyIX
Člen | 217
+
0
-

Delam si service pro posilani mailu a rikal jsem si, ze by nebylo spatne mit vsechna data pro mail nadefinovana v Latte sablone. Tj.

{* {block #from}{/block} *} <- mohlo by se hodit, pokud bych chtel prepsat vychozi hodnotu, kterou mam ulozenou v config.neon
{block #subject}{/block}
{block #text}{/block}

Jednoduse je mozne nechat zpracovat celou sablonu ulozenou v souboru:

$template = new Nette\Templating\FileTemplate($file);
$template->registerFilter(new Nette\Latte\Engine());
$template->setParams($data);

return (string) $template;

Je to mozne i po blocich? Tzn. nechat zpracovat sablonu vyse a moci se dostat k obsahu bloku subject a text?

Diky!

Filip Procházka
Moderator | 4668
+
0
-

Mělo by to jít pomocí vlastních maker, zpracuješ šablonu a zároveň si přečteš co v ní bylo.

David Grudl
Nette Core | 8228
+
0
-

Udělat by se to mohlo, jen to chce vymyslet sympatické API, tj. jak by se to mělo používat.

MartyIX
Člen | 217
+
0
-

Jde o to, jestli nejsem sam, komu by se to hodilo a jestli ma jeste nekdo use-case :)

A co takto:

  • (string)$template by stale vracel stale kompletni vystup a
  • $template->nazevBloku by vratil to same co predchozi pripad ale jen pro dany blok.
Filip Procházka
Moderator | 4668
+
0
-
$template->__message = new Nette\Mail\Message;
$template->render();
{to franta@seznam.cz, pepa@seznam.cz, ondra@seznam.cz}
{* $__message->addTo('franta@seznam.cz')->addTo('pepa@seznam.cz')->... *}
{from $user->identity->email}
{* $__message->setFrom($user->identity->email) *}
{headers ponny => 'brony'}

{message}
	Ahoj kluci, nezapomeňte v sobotu na to pivko.
{/message}
{* $__message->setHtmlBody(...) *}

Jenom takový nápad…

vladimir
Člen | 11
+
0
-

David Grudl napsal(a):

Udělat by se to mohlo, jen to chce vymyslet sympatické API, tj. jak by se to mělo používat.

Ahoj, mohl bych se zeptat, jestli se s tímhle nějak počítá? Docela by se to, myslím, mohlo hodit :-)

MartyIX
Člen | 217
+
0
-

https://github.com/…nette-iMail/ – tady je implementace napadu HosipLana.

Pridal jsem navic par drobnosti jako:

  • {addHelper},
  • auto-loading helperu,
  • {require} pro vynuceni parametru sablony

Odeslani emailu pak vypada takto:

$iMail = new \MartyIX\Utils\Mail\iMail();
$m = $iMail->setTemplate(__DIR__ '/template.latte', array('company' => 'A* company'))
           ->setFrom('no-reply@test.com')
           ->setTo('test@test.com')
           ->setSubject('News from ...')
           ->send();

nebo jen:

{addHelper 'parenthesis', '\iMailTest::dummyParenthesisHelper'}

{from 'no-reply@test.com'}
{to 'you@serious.ly'}
{subject 'dummy subject'}

{message}
  You have received the news letter from {$company}!
  ...
{/message}
$iMail = new \MartyIX\Utils\Mail\iMail();
$m = $iMail->setTemplate(__DIR__ '/template.latte', array('company' => 'A* company'))->send();

________________________________________________________________

Pouziti by melo byt jasne z testu, ktere najdete na GitHubu.

Editoval MartyIX (3. 12. 2011 18:57)

petr.pavel
Člen | 535
+
0
-

@MartyIX: díky