Odesílání emailů. Žádný nedorazí
- Fyasko
- Člen | 106
Ahoj všem. Snažím se po registraci uživatele odeslat email s aktivačním odkazem. Což vypadá takto:
<?php
use Nette\Mail\Message;
use Nette\Mail\SendmailMailer;
$mail = new Message;
$mailer = new SendmailMailer;
$mail->setFrom('fyaskostyler@ninecreative.cz')
->addTo('fyaskostyler@seznam.cz')
->setSubject('Aktivace účtu')
->setBody("Dobrý den,\nprávě jste se zaregistroval/a na stránce URL.\nPro aktivaci vašeho účtu použijte následující odkaz:\nhttp://url/activate/".$token);
$mailer->send($mail);
?>
Na starších verzích nette mi to šlo bez problémů jako na localhostu tak online. Na 2.3.7 jaksi nechce dorazit žádný email. Mohl by někdo poradit proč popř. jestli existuje nějaký debug?
- Matey
- Člen | 142
Ahoj. Použi IMailer a vytiahni si ho z DI. Tym dostaneš mailer nakonfigurovaný z neonu
<?php
use Nette\Mail\Message;
use Nette\Mail\IMailer;
/** @var IMailer @inject */
public $mailer;
/*alebo*/
private $mailer;
public function __construct(IMailer $mailer)
{
$this->mailer = $mailer
}
/* + použitie */
$mail = new Message;
$mail->...;
try {
$this->mailer->send($mail);
} catch (SendException $e) {
Debugger::log($e, 'mailexception');
}
?>
Editoval Matey (22. 11. 2015 10:14)
- David Grudl
- Nette Core | 8239
Nejprve zkus vyloučit (což bude pravděpodobnější) nebo potvrdit souvislost s verzí Nette. Pak se bude problém hledat snáz.
- chemix
- Nette Core | 1310
@Fyasko bylo by dobre zjistit kde je chyba. Treba kdyz si na stejnem
serveru zkusis poslat email pomoci funkce mail()
zdali dorazi,
pokud nedorazi chyba neni v nette, ale nekde hloubeji.
Pokud dorazi, zkusil bych pouzit jiny „debugovaci“ mailer. Treba ja
pouzivam "jandrabek/nette-mailpanel": "~3.2"
(pozor vyzaduje
"nette/deprecated": "~2.3",
). V tracy by se pak mel zobrazit email
ze se ho snazilo nette poslat klasickou cestou.
Pokud se nezobrazi je chyba nekde v aplikaci. Pokud se zobrazi je chyba nekde v senderu. Otazkou pak bude kde…
Co pouzivas za hosting, nedelali zmeny? neni jejich IP adresa na black listu apd apd…
- kejlicz
- Člen | 201
Pokud to máš na localu, tak si nainstaluj tuhle utilitku https://smtp4dev.codeplex.com/ . To simuluje SMTP server. Podle toho uvidíš, jestli ten email odejde z PHP.