Posílání HTML emailu – v latte sablone se promenna s html obsahem vypisuje jako string s html tagy
- siberit
- Člen | 10
Zdravím,
vytvářím aplikaci která kontroluje obsahy stránek a při jejich změně
upozorní uživatele a pošle jim čitelně zobrazené změny obsahu. Potřebuji
tedy posílat html emaily, chtěl bych na to využít Nette\Mail\ a latte
sablonu. Problém mám však v tom že do latte sablony pomocí
$template->html = $html;
potřebuji poslat string který
obsahuje změny na stránce doplněný o html tagy (napr. pro odebrany text
pouzivam tag del) a takto předaný string se již v šabloně neinterpretuje
jako html kod ale jako string.. čili ve výsledném mailu je vidět veškerý
text i s tagy. Je nějaká možnost jak docílit toho aby se string
předávaný do šablony interpretoval jako html kod? Pokud nepoužívám
šablonu a ten samý string dám přímo do
->setHtmlBody($template)
tak vše funguje dobře. Díky za
pomoc..
Editoval siberit (19. 2. 2014 9:39)
- kashpi
- Člen | 48
samozřejmě že ta možnost je :)
požívám
$body = $this->createTemplate('\Nette\Templating\Template');
$body->setSource(new FileTemplate('cesta k sablone'));
$body->html = $html;
kde
$body->html
je vlastně v té šabloně {$html}
Takže tak můžeš předat více proměnných
a pak nakonec ve vytváření Nette\Mail
použiješ
...
->setHtmlBody($body)
...
- jiri.pudil
- Nette Blogger | 1032
Nebo prostě jenom v šabloně, kde ten kód vypisuješ, vypni escapování:
{$html|noescape}
- siberit
- Člen | 10
To kashpi:
Tohle vím, pokud mi tedy něco neuníká.. dělám to takto:
<?php
$template = new Nette\Templating\FileTemplate('../app/templates/Mails/notifEmail.latte');
$template->registerFilter(new Nette\Latte\Engine);
$template->registerHelperLoader('Nette\Templating\Helpers::loader');
$template->html = $html;
$mail = new Message;
$mail->setFrom('Hlídač změn <notification@hlidaczmen.cz>') //odesilatel
->addTo($user["email"]) //prijemce
->setHtmlBody($template) //pouzita sablona
->send();
?>
K proměnné $html potom v šabloně přistupuju přes {$html}
Proměnná $html obsahuje html kod.. kdyz ji však takto přidám do šablony
tak ve výsledném emailu není její obsah formátovaný jako html ale jako
string, kdy se zobrazují i veškeré html tagy místo toho aby to bylo
naformátované.. tedy ve výsledném emailu se zobrazí např.
<strong>Nejaky text</strong>
místo toho aby ten text
byl tučně..
To jiri.pudil:
{$html|noescape} – vyzkoušel jsem ale háže mi to: „Call to undefined method Nette\Templating\FileTemplate::noescape()“
To Oli:
Tohle mi asi nepomůže, ale děkuju..
Editoval siberit (19. 2. 2014 11:11)