Ako správne odosielať email v Nette 2.4

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

Zdravím…
Rád by som sa spýtal aký je momentálne najlepší spôsob odosielania mailu aj so šablónou?
Na fóru som našiel dosť informácii ale každé sú rôzne a trochu som z toho zmetený…
Uvediem príklad…

SignUpFormFactory.php

try {
				$this->userManager->add($values->email_adress, $values->password, $date_create, $ip_adress, $token);

				$params = array(
					'verifyLink' => $this->linkGenerator->link('Members:verify', ['token' => $token]),
				);

				$mail = new Message;
				$latte = new Engine;
		        $mail->setFrom('Soulbook <jozef.sipos197@gmail.com>')
		            ->addTo($values->email_adress)
		            ->setSubject('Dokončenie Registrácie')
		            ->setBody($latte->renderToString('App\Presenters\Templates\Members\activate.latte', $params));
		        $this->mailer->send($mail);

Šablóna Activate.latte

{block content}
<p>Registrácia úspešne dokončená!</p>
<p>
	Ďakujeme za registráciu na stránke <strong>Soulbook.rip</strong> ore správne dokončenie registrácie prosím aktivujte svoj účet kliknutím na odkaz nižšie.
</p>
<p>
	<a href="{$verifyLink|noescape}">Aktivovať účet</a>
</p>
<p>
	Pokial Vám kliknutie nefunguje skopírujte odkaz a vložte ho do prehliadača.
</p>
<p>
	{$verifyLink|noescape}
</p>
{/block content}

Ale zdá sa mi že niečo nie je v poriadku síce sa email odošle aj ho dostanem ale na gmail už sa zobrazuje aj s celým html kódom...

Mohli by ste ma nasmerovať na správne odosielanie mailu?

Za odpoveďe všetkým vopred Ďakujem.
CZechBoY
Člen | 3608
+
+1
-

cca tak nějak, akorát lepší dělat template přes Nette\Application\UI\ITemplateFactory než přímo přes latte.

No a teda html se zapisuje přes

$message->setHtmlBody($html);

Editoval CZechBoY (18. 9. 2016 15:42)

SontoEremo
Člen | 341
+
0
-

CZechBoY napsal(a):

cca tak nějak, akorát lepší dělat template přes Nette\Application\UI\ITemplateFactory než přímo přes latte.

No a teda html se zapisuje přes

$message->setHtmlBody($html);

Vďaka za odpoveď je toto správne teda?

$template = $this->templateFactory->createTemplate();
            $template->setFile('App\Presenters\Templates\Members\activate.latte');
            $template->user = $user;
            $template->verifyLink = $this->linkGenerator->link('Members:verify', array(
                'token' => $token,
            ));

            $mail = new Message;
            $mail->setFrom('PageName <email-adress@email.xxx>')
                 ->addTo($values->email_adress)
                 ->setSubject('Aktivácia účtu')
                 ->setHtmlBody($template);

            $this->mailer->send($mail);
CZechBoY
Člen | 3608
+
+1
-

Pokud to funguje tak ok. Jinak toho uživatele tam nemusíš dávat, ta továrna ho tam dá sama (pokud to je Nette\Security\User).