SmtpMailer pomoci NetteExtension

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

Snazim se nakonfigurovat SmtpMailer pomoci NetteExtension, viz https://forum.nette.org/…-config-neon

Po vypsani maileru z kontejneru (pro kontrolu) jsou uvedeny stale default udaje a mnou uvedene v configu se neberou v potaz.

Toto: https://forum.nette.org/…er-nastaveni nepomohlo

Config.neon:

	nette:
		mailer:
			smtp:
				host: 'smtp.savana.cz'
				port: 25
				username: 'xxx'
				password: 'xxxxx'

Po vypsani print_r($this->context->nette->mailer); pro kontrolu v presenteru nasledujici vystup s default hodnotama:

Nette\Mail\SmtpMailer Object
(
    [connection:Nette\Mail\SmtpMailer:private] =>
    [host:Nette\Mail\SmtpMailer:private] => localhost
    [port:Nette\Mail\SmtpMailer:private] => 25
    [username:Nette\Mail\SmtpMailer:private] =>
    [password:Nette\Mail\SmtpMailer:private] =>
    [secure:Nette\Mail\SmtpMailer:private] =>
    [timeout:Nette\Mail\SmtpMailer:private] => 20
)

Co delam spatne?

David Matějka
Moderator | 6445
+
0
-

ty udaje musi byt o uroven vys..

nette:
        mailer:
                smtp: nesmi byt prazdne ale nebere se v potaz
                host: 'smtp.savana.cz'
                port: 25
                username: 'xxx'
                password: 'xxxxx'
Jan Mikeš
Člen | 771
+
0
-

To nefunguje. Vyhazuje Nette\DI\ServiceCreationException No service of type Nette\Mail\SmtpMailer found.

Edit: nejakym zpusobem jsem se vyjimky zbavil, ale funkcnost vubec zadna.

Editoval Lexi (11. 9. 2012 17:56)

ViPEr*CZ*
Člen | 813
+
0
-

Toto by mělo fungovat podle dokumentace: https://doc.nette.org/cs/configuring#…

  • zkuste po dokončení nastavení smazat cache.
Jan Mikeš
Člen | 771
+
0
-

Parada diky to je ono, chybelo za smtp uvest true a o uroven vyse jak psal matej (bez true u smtp to ale nefungovalo).

Jan Mikeš
Člen | 771
+
0
-

Jeste by me zajimalo, jak dostanu $container->nette->createMail() do presenteru (componenty) bez pouziti CONTEXTu?

Momentalne pouzivam toto:

// v presenteru si vstriknu mailer
public function injectMailer(Nette\Mail\SmtpMailer $mailer)
{
        if ($this->mailer)
            throw new Nette\InvalidStateException('Mailer has already been set');
        $this->mailer = $mailer;
}

// ktery pak predavam komponente
protected function createComponentRegisterForm(){
	$form = new Forms\RegisterForm(..., $this->mailer, ...);
	// ...
}

A v komponente pak odesilam maily timhle zpusobem:

$mail = new Nette\Mail\Message;
$mail->setMailer($this->mailer)->...->send();
// $this->mailer->send($mail); nefunguje, vyhazuje vyjimku RCP TO: xxx refused by SMTP server

Je toto spravne reseni? Da se pripadne nejak mailer nastavit jako default tak abych ho nemusel predavat do kazde komponenty ve ktere chci odesilat emaily? Kdyz ho nepredam a nenatavim ho pomoci ->setMailer() tak se mi pouzije klasicky SendmailMailer

David Matějka
Moderator | 6445
+
0
-

necha se nastavit staticky, ale to neni moc hezky :)

https://api.nette.org/…age.php.html#39

mozna by stalo za to vytvorit sluzbu neco jako MailFactory, ktera by prijimala mailer a mela by metodu createMessage, co by vytvorila message a treba i rovnou nejak nakonfigurovala

ViPEr*CZ*
Člen | 813
+
0
-

Vypadá to v pohodě… nevidím tam nic proti. Static určitě nepoužívejte. ;-)