Mailer smtp nastavení přes config.neon

- Pepiik
- Člen | 10
Zdravím
podle dokumentace https://doc.nette.org/cs/configuring#…
jsem v config.neon vyplnil
<?php
mail:
smtp: true # zapne SmtpMailer místo SendmailMailer
host: xxx
username: xxx
password: xxx
# dále lze uvést host, port, username, password, secure, timeout
?>
v presenteru pak používám
<?php
$email = new Nette\Mail\Message;
...
...
$emailer = new \Nette\Mail\SendmailMailer;
$emailer->send($email)
?>
Podle té dokumentace očekávám, že by se měl automaticky použít ten smtpMailer.
emaily se mi pořád neposílají přes smtp. Jak na to prosím?

- Unlink
- Člen | 298
Ten mailer si musíš v presentery vyžiadať pomocou DI
https://doc.nette.org/…introduction

- David Matějka
- Moderator | 6445
Pomoci DI si vyzadej Nette\Mail\IMailer – coz je interface, ktery implementuji vsechny mailery. Nette DI kontejner ti pak doda implementaci, kterou mas nastavenou – v tvem pripade tedy SmtpMailer.

- Šaman
- Člen | 2668
Tohle je naprosto zásadní nepochopení toho, jak DI pracuje. Ano,
v aplikaci se připraví SmtpMailer, ale ty si pak ručně vytvoříš
SendmailMailer a nad ním provedeš odeslání. Takže nikoliv Nette,
ale ty ten SmtpMailer nepoužíváš.
Ten SmtpMailer si normálně injectuj jako službu, viz dokumentace.

- Pepiik
- Člen | 10
Super děkuji za nakopnutí.
Vyřešil jsem a funguje. Tedy jestli ještě dovolíte zkontrolovat.
v config.neon jsem tedy nastavil
<?php
services:
- Nette\Mail\SmtpMailer
mail:
smtp: true # zapne SmtpMailer místo SendmailMailer
host: xxx
username: xxx
password: xxx
?>
a v presenteru
<?php
/** @var \Nette\Mail\SmtpMailer @inject */
public $mailer;
?>
Editoval Pepiik (29. 4. 2015 23:30)

- David Matějka
- Moderator | 6445
@Pepiik
- neregistruj tu sluzbu rucne. Tou konfiguraci to nette registruje samo
- nevyzaduj
\Nette\Mail\SmtpMailerale jak jsem psal –\Nette\Mail\IMailer

- Šaman
- Člen | 2668
David Matějka napsal(a):
@Pepiik
1. neregistruj tu sluzbu rucne. Tou konfiguraci to nette registruje samo
Jinak řečeno smaž to v sekci services a nech jen sekci
mail. Kdybys to chtěl registrovat v services, tak bys tomu musel
předat všechny údaje ručně.
Editoval Šaman (29. 4. 2015 23:53)

- Croc
- Člen | 270
Jak se dostat v modelu k nastavení mailu z configu?
//Model
/** @var Nette\Database\Context */
private $database;
/** @var Nette\Application\LinkGenerator */
private $linkGenerator;
/** @var Nette\Security\User */
public $user;
/** @var Nette\Mail\IMailer */
public $mailer;
public function __construct(Nette\Database\Context $database, Nette\Application\LinkGenerator $generator, Nette\Security\User $user, Nette\Mail\IMailer $mailer)
{
$this->database = $database;
$this->linkGenerator = $generator;
$this->user = $user;
$this->mailer = $mailer;
}
//......
//......
// *** část obsahu metody ***
$mail = new Message;
$mail->setFrom('PesMánie.cz <info@pesmanie.cz>')
->addTo($user['username'])
->setHtmlBody($template);
// $mailer = new SendmailMailer;
//$mailer = new Nette\Mail\SmtpMailer;
$this->mailer->send($mail);
Config:
mail:
smtp: true # zapne SmtpMailer místo SendmailMailer
host: *******
username: *****
password: *****
Ale dostanu chybu:
Nette\Mail\SmtpException #10061
Nemohlo bt vytvoeno dn pipojen, protoe clov pota je aktivn odmtl.

- Croc
- Člen | 270
Jak se dostat v modelu k nastavení mailu z configu?
//Model
/** @var Nette\Database\Context */
private $database;
/** @var Nette\Application\LinkGenerator */
private $linkGenerator;
/** @var Nette\Security\User */
public $user;
/** @var Nette\Mail\IMailer */
public $mailer;
public function __construct(Nette\Database\Context $database, Nette\Application\LinkGenerator $generator, Nette\Security\User $user, Nette\Mail\IMailer $mailer)
{
$this->database = $database;
$this->linkGenerator = $generator;
$this->user = $user;
$this->mailer = $mailer;
}
//......
//......
// *** část obsahu metody ***
$mail = new Message;
$mail->setFrom('mujweb.cz <info@mujweb.cz>')
->addTo($user['username'])
->setHtmlBody($template);
// $mailer = new SendmailMailer;
//$mailer = new Nette\Mail\SmtpMailer;
$this->mailer->send($mail);
Config:
mail:
smtp: true # zapne SmtpMailer místo SendmailMailer
host: *******
username: *****
password: *****
Ale dostanu chybu:
Nette\Mail\SmtpException #10061
Nemohlo bt vytvoeno dn pipojen, protoe clov pota je aktivn odmtl.
Editoval Croc (1. 5. 2015 15:30)

- Šaman
- Člen | 2668
Croc napsal(a):
Zkusil jsem to nahrát na hosting a tam to chodí. Takže nyní používám toto:
// ---- Settings for localhost ---- // $mailer = new SendmailMailer; // $mailer->send($mail); // ---- Settings for production ---- $this->mailer->send($mail);
Poradím ti něco lepšího – přesuň konfiguraci mailů do
config.local.neon. Pak můžeš používat na localu jiný, než na
produkci. Přesně proto tenhle soubor existuje. (Já třeba na localu běžně
používám nějaký DumpMailer, který reálně nic neposílá.)