Nette/Mail nepošle mail

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

Už hodinu se tady babrám s problémem neposílání e-mailu pomocí Nette/Mail. Na webu posílám 3 e-maily, ale nefunkční je jenom jeden a to mě dost zaráží.

Kód vypadá nějak takto

<?php
$template = new Template;
$template->registerFilter('Nette\Templates\LatteFilter::invoke');
$template->setFile(APP_DIR. '/templates/Admin/mail.phtml');
$mail = new Mail;
$mail->setFrom('Potvrzení <objednavka@domena.cz>');
$mail->setSubject('Potvrzení platby');
$mail->addTo($this->getParam('mail'));
$mail->setHtmlBody($template);
$mail->send();
?>

Laděnka hlásí „Unable to send email.“ na řádku $mail->send(). Předávaná e-mailová adresa je v pořádku. Zkoušel jsem na dvou hostinzích a nikde to nefunguje. Na localhostu nemám nastavený e-mail, takže nemůžu odzkoušet.

Předchozí dva e-maily posílám přímo v actione presenteru, tento e-mail je v handle. Nemůže to být tím? Popřípadě co by mohlo být špatně? Předem díky za tipy.

HonzaMac
Člen | 40
+
0
-

$mail->setFrom(‚Potvrzení <objednavka@domena.cz>‘);

Nemělo by být

$mail->setFrom('"Potvrzení" <objednavka@domena.cz>');
nebo
$mail->setFrom('objednavka@domena.cz', 'Potvrzení');

Podle API dokumentace ano

Edit: Tak by to mělo brat i bez uvozovek, podle implemtace. Tak teda at rekne nekdo zkušený :-/

Editoval HonzaMac (10. 11. 2009 17:50)

Kenn
Člen | 110
+
0
-

Právě. Používám to naprosto stejně v jiném presenteru s tím, že tam navíc přidávám přílohu. Proto je to divné. Jediný rozdíl je, že místo v action je to v handle.

falkon
Člen | 17
+
0
-

Len doplnim trochu informacii, mozno sa niekomu budu v buducnosti hodit, az bude podobnu chybu hladat to na fore…

S chybou „Unable to send email.“ som sa nedavno stretol a bola sposobena ‚specialnymi‘ znakmi v adrese odosielatela (potencialne je na chybu asi nachylna kazda adresa). V mojom pripade hostingu vadili dvojbodky „::“, ale email sa nepodaril odoslat ani s dalsimi specialnymi znakmi v adrese odosielatela (len v rychlosti som skusal „# $ % & ! ( ) [ ]“, takze niektore z toho :) ).

Prazvlastne na tom je to, ze na inom serveri mi to fungovalo normalne, z coho usudzujem, ze ide o nejake problematicke nastavenie/implementaciu sendmail-u na tom-ktorom systeme. V logu sa ale ziadne hlasky od PHP neobjavovali, takze netusim presne, co mu vadilo.

Prva otazka ktora sa naskyta je, ci Nette korektne escapuje pouzite znaky v adrese (v jej „name“ casti), ale ja som toto zatial neskumal. (?mozno by sa na to mohol niekto pozriet, ci nahodou nie je nejaka chybka v Nette?).

Ako potencialny workaroung ma napada na „postihnutych hostingoch“ pouzivat priamo nejaky SMTP transport, ktory by obchadzal sendmail – bohuzial ale Nette nic okrem Sendmail-u v zaklade nepodporuje – bolo by treba pouzit (a „ohnut“) napr. Zend_Mail_Transport_Smtp. Osobne som toto riesenie este neskusal, takze to berte cisto ako ‚proposal‘… :)