Nefunguje odesílání emailu z kontaktního formuláře
- spiider
- Člen | 162
Ahoj mám jednoduchý kontaktní formulář po jehož vyplnění bych ho chtěl odeslat pomocí emailu. Používám přesně stejný příklad jako je v dokumentaci:
if ($form['send']->isSubmittedBy()){
$data = $form->getValues();
$body = "Zpráva od: $data[name]
Email: $data[email]
Zpráva: $data[message]
";
$mail = new Message;
$mail->setFrom('Franta <franta@example.com>')
->addTo('mujemail@seznam.cz')
->setSubject('Zpráva z kontaktního formuláře')
->setBody($body)
->send();
$this->flashMessage('Děkujeme za zaslání zprávy');
$this->redirect('Contact:default');
}
Jak jsem zjistil vše zkolabuje na send(); hlásí to chybu 500, nevíte kde je problém. Jinak vše na stránkách funguje v pořádku. Díky
- Jan Endel
- Člen | 1016
Log by si mel udrzovat prubezne cisty, ale budiz. Nette se chova pri logovani tak, ze kdyz chyba nastane opakovane, tak vygeneruje ladenku pro dannou chybu jen co par dnu. Tedy zazalohuj si veskere vygenerovane ladenky (a posleze je vyres) z logu ladenky smaz a refreshni stranku. Mela by se v logu objevit nova ladenka s chybou co shanis.
- Jan Endel
- Člen | 1016
jde o funkci send defaultně používá interní funkci php mail(), které se nelíbí pátý argument, v tomto případě public property $commandArgs objektu SendmailMailer. A nějak z api nedokážu vyčíst, jak se tam ten $coomandArgs dostane a hlavně odkud. Zkus si bud tedy dumpnout:
$mail->mailer->commandArgs;
a nebo (což rozhodně doporučuju) vytvoř SMTP mailer a napoj se na existující smtp přes které posílej (pokud není šikovně nakonfigurovaný stroj totiž, tak to stejně bude chodit do spamu a třeba na seznam vůbec nedojde v defaultní konfiguraci debianu).
Editoval pilec (14. 11. 2011 22:31)
- spiider
- Člen | 162
Tak sem to zkusil podle návodu i podle ruzných vlánek na fóru ale pořád nic, teď to mám takto:
if ($form['send']->isSubmittedBy()){
$data = $form->getValues();
$body = "Zpráva od: $data[name] \n
Email: $data[email] \n
Zpráva: $data[message] \n
";
$mail = new Mail();
$mail->setFrom('info@stranky.cz')
->addTo('email@example.cz')
->setSubject('Zpráva z webu')
->setBody($body);
$mailer = new Mailer((array) \Nette\Environment::getConfig('mailer'));
$mail->setMailer($mailer);
$mail->send();
$this->flashMessage('Děkujeme za zaslání zprávy');
$this->redirect('Contact:default');
}
a v config.neon mam toto:
mailer:
host: smtp.server.cz
port: 465
username: „info@stranky.cz"
password: "*****“
transport: ssl
takhle sem to tu někde našel, ale píše to Class ‚Nette\Mail‘
not found
Díky za rady