Odeslání emailu pomocí latte
- mario85
- Člen | 22
Zdravím všechny,
snažít se naučit nette. Jedu podle tutoriálu a dokumentace, celkem se vše
daří. Teď jsem se zasekl u e-mailů, potřeboval bych asi nakopnout. V dokumentaci je následující
příklad:
$latte = new Latte\Engine;
$params = array(
'orderId' => 123,
);
$mail = new Message;
$mail->setFrom('Franta <franta@example.com>')
->addTo('petr@example.com')
->setHtmlBody($latte->renderToString('email.latte', $params));
a šablona:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Potvrzení objednávky</title>
<style>
body {
background: url("background.png")
}
</style>
</head>
<body>
<p>Dobrý den,</p>
<p>Vaše objednávka číslo {$orderId} byla přijata.</p>
</body>
</html>
Tohle jsem rozjel. Pak jsem si chtěl přidat generování odkazů do emailu, takže jsem dle dokumentace upravil presenter:
use Nette;
class MyPresenter
{
public function actionFoo()
{
$template = $this->createTemplate()->setFile('email.latte');
$mail = new Message();
$mail->setHtmlBody($template);
}
}
což je super – odkazy fungují, ale nefunguje předání proměnných do šablony. Upravil jsem tedy:
use Nette;
class MyPresenter
{
public function actionFoo()
{
$params = array(
'orderId' => 123,
);
$template = $this->createTemplate()->setFile('email.latte');
$mail = new Message();
$mail->setHtmlBody($latte->render($template, $params));
}
}
ale tracy mi vypisuje Undefined variable: orderId
Dokážete mě prosím popostrčit? Díky :-)
Marek
- pata.kusik111
- Člen | 78
use Nette;
class MyPresenter
{
public function actionFoo()
{
$template = $this->createTemplate()->setFile('email.latte');
$template->orderId = 123;
$mail = new Message();
$mail->setHtmlBody($template);
}
}
- Pavel Janda
- Člen | 977
@mario85 Doporučím pro odesílání emailů tento balíček. Každý mail
je objekt dědící od základní třídy Mail. Šablony jsou vytvářeny
automaticky – čeká se, že když je třída mailu v
/mailing/ContactMail.php, bude šablona v /mailing/templates/contact_mail.latte.
Parametry jsou také automaticky předávány do šablony.
Zároveň to samo loguje maily do .eml
souboru (Pokud
v konfiguraci neuvedeš jinak).
Kdybys to chtěl použít a na něco se zeptat, vše zodpovím.