SmtpMailer načtení konfigurace

MedaKeR
Člen | 8
+
0
-

V souboru common.neon mám nastavení mailu

...
mail:
	smtp: true
	host: 'smtp.seznam.cz'
	port: 465
	username: 'user@email.cz'
	password: 'VtlSHgxGM8WyMik'
	encryption: null
...

a následně si v presenteru vytvořím SmtpMailer:

    $mail = new Message;
    $mail->setFrom('Admin <user@email.cz>')
        ->addTo("someone@gmail.com")
        ->setSubject('Mail')
        ->setHtmlBody("content");
    $mailer = new Nette\Mail\SmtpMailer();
    $mailer->send($mail);

Očekával jsem, že když konsturktoru SmtpMailer nedám array parametrů (což je na webu velmi matoucí), tak se načte výchozí konfigurace z common.neon. Takto jak to mám, se však načte výchozí nastavení z php.ini.

Jakým způsobem do SmtpMaileru dostat nastavení z common.neon?

Editoval MedaKeR (5. 4. 2023 13:25)

nightfish
Člen | 472
+
+3
-

@MedaKeR
Použij DI a vyžádej si službu typu Nette\Mail\Mailer – Nette ti pak vrátí buď SmtpMailer nebo SendmailMailer, v závislosti na tom, co si nakonfiguruješ v config.neon.

Když ve svém kódu použiješ napřímo new SmtpMailer(), tak k žádnému automatickému doplňování (autowiringu) parametrů nedochází.

Marek Bartoš
Nette Blogger | 1165
+
+2
-

Mailer si máš vyžádat jako službu, ne ho vytvářet.
V konstruktoru maileru není žádná magie, kterou by se config získal z neonu. Z configu v neonu se vygeneruje DIC (najdeš ho ve složce temp/nette.configurator) a v tom se mailer vytváří přes new, stejně jako bys to udělal ty.

David Grudl
Nette Core | 8111
+
0
-

@MedaKeR Napadá tě, jak konkrétně to v dokumentaci vysvětlit?

MedaKeR
Člen | 8
+
0
-

David Grudl napsal(a):

@MedaKeR Napadá tě, jak konkrétně to v dokumentaci vysvětlit?

Teď jak mi to bylo vysvětleno, to v té dokumentaci vidím. Tím matoucí mám na mysli to, že na webu je dokumentace pro v4.0.0 ale na gitu je stále v3.1.10 jako Release (čiže composer tahá právě tu starší verzi, kde konstruktor přijímá array).

Díky, problém vyřešen. :)

David Grudl
Nette Core | 8111
+
+1
-

To je divný, viz https://github.com/…s/tag/v4.0.0.

Pravděpodobně instalaci v4 znemožňují jiné knihovny.

Marek Bartoš
Nette Blogger | 1165
+
+1
-

composer why-not nette/mail ^4.0.0 ti řekne, proč poslední verzi nemůžeš nainstalovat
Případně composer update "nette/mail ^4.0.0" -W