Podivné chování šablony emailu
- RiZe
- Člen | 13
Momentálně ladím svou aplikaci na hostingu od Forpsi a setkal jsem se se zajímavým problémem. Sem tam potřebuji odeslat nějaký ten email, takže jsem si udělal pomocnou třídu pro zkrácení zápisu. Třída se jmenuje DMail a je potomkem NMail, má metodu pro přiřazení šablony a proměnných šablony a umístěna je v /libs/Nette.Extras/DD/.
<?php
public function init($template, $vars)
{
if (!is_array($vars))
{
throw new InvalidArgumentException('Array expected as method argument.');
}
$template = new NTemplate($template);
foreach ($vars as $key => $value)
{
$template->$key = $value;
}
// Assign template to the NMail as HTML body
$this->setHtmlBody($template);
// While testing we will use SMTP service but on Production server
// mail function is configured properly
if (NEnvironment::isProduction())
{
$mailer = new NSendmailMailer();
}
else
{
$config = NEnvironment::getConfig('mail');
$mailer = new NSmtpMailer($config['host'], $config['port'], $config['transport'], $config['username'], $config['password']);
}
// Set mailer
$this->setMailer($mailer);
}
?>
V aplikaci, kde je třeba odeslat email pak vytvořím nový email, nastavím parametry a odešlu jej:
<?php
$vars = array(
'title' => 'Obnovení hesla účtu',
'username' => $user['username'],
'password' => $password,
);
$mail = new DMail;
$mail->init(MAIL_DIR . '/lostpassword.phtml', $vars); // MAIL_DIR je cesta k šablonám emailových zpráv
$mail->addTo($user['user_email'], $user['username']);
$mail->setFrom('noreply@...', '...');
$mail->setSubject('Obnovení hesla');
$mail->send();
?>
Na localhostu mi vše bezvadně funguje, načte se šablona, přiřadí se jí proměnné z pole $vars, nastaví se Mailer a email se odešle. Na ostrém serveru se email odešle také, ale v šabloně nejsou nahrazeny proměnné:
Předmět: Obnovení hesla
Text:
Vážený uživateli {$username}
…
V metodě init třídy DMail jsem zkusil dumpnout $vars, na testovacím stroji jsem dostal pole s příslušnými prvky, na ostrém serveru žádný výstup. Dokonce i když v init zavolám die(), tak se na ostrém serveru vůbec nic nestane.
Editoval RiZe (23. 8. 2010 10:09)
- RiZe
- Člen | 13
Tak problém vyřešen. Ohledně die() a dump() byla chyba na mé straně, přepisoval jsem na serveru špatný soubor. Kde ovšem byla chyba co se týče proměnných šablony opravdu netuším, nahrál jsem znovu všechny soubory a už je to v pořádku.
gmvasek: Ačkoliv jsem to nakonec vyřešil, děkuji za reakci
Editoval RiZe (23. 8. 2010 10:14)