DI, NEON – SmtpMailer service not found
- sjiamnocna
- Člen | 28
Dobrý den,
snažím se rozjet SmtpMailer. Samozřejmě bych mohl vyrobit nový a
podstrčit mu údaje, ale to nechceš (údaje v GITu), takže jdu cestou
configu v local.neon. Databáze (Connection) se rozjela v pohodě (nebo se
aspoň nahrála) normálně přes database: ...
, horší je to
s Mailerem.
Ten mi vždycky háže „Service not found did you add it to config?“. V
https://doc.nette.org/cs/mail#…
je psáno, že při zapnutí SMTP mi bude automaticky vyrábět SmtpMailer. Ten
dělá Service not found. Zkoušel jsem taky, zda se nevyrábí jen normální
Sendmail, ale ten mi říká to samé…
Service of type Nette\Mail\SmtpMailer required by ... not found
local.neon vypadá nějak takto;
database:
dsn: ***
user: ***
password: ***
mail:
smtp: true
host: ***
port: ***
username: ***
password: ***
secure: ***
a vyžádání probíhá normálně přes __construct;
private Connection $Con;
private SmtpMailer $Mailer;
/**
* Array of app data
*/
private array $data = [];
public function __construct(
Connection $Con,
SmtpMailer $Mailer
){
$this->Con = $Con;
$this->Mailer = $Mailer;
}
Kaši jsem smazal, žádná změna :/
Můžete mi prosím poradit? Nebo aspoň dát tip, co zkoušet?
Díky
Editoval sjiamnocna (26. 4. 2022 21:36)
- Kamil Valenta
- Člen | 815
Vyžádej si z DI obecně Nette\Mail\Mailer.
https://doc.nette.org/cs/mail#…
Editoval Kamil Valenta (26. 4. 2022 21:54)
- nightfish
- Člen | 516
@sjiamnocna Do kontejneru Nette automaticky registruje službu typu
Nette\Mail\Mailer
, což je typ, který chceš vyžadovat
v konstruktoru. Podle konfigurace (mail.smtp
) se tam objeví buď
SmtpMailer
nebo SendmailMailer
, ale to tě prakticky
nemusí zajímat, protože metodu send()
obsahují obě
implementace.
Viz https://doc.nette.org/cs/mail#… a https://github.com/…xtension.php
- sjiamnocna
- Člen | 28
private Connection $Con;
private Mailer $Mailer;
public function __construct(
Connection $Con,
Mailer $Mailer
){
$this->Con = $Con;
$this->Mailer = $Mailer;
}
Super, díky. Tváří se, že funguje :)
Editoval sjiamnocna (27. 4. 2022 9:14)
- sjiamnocna
- Člen | 28
No a konfiguroval už takhle někdo SMTP přes Gmail na vlastní doméně? Nějaké doporučení, zkušenosti? :)
- nightfish
- Člen | 516
Funguje mi tohle. Protože mám účty řešené přes Google Workspace a
mám aktivní dvoufaktorové přihlašování (mám pocit, že je povinné),
musel jsem si pro odesílání e-mailů pod účtem info@example.cz
vygenerovat App Password, které v konfiguraci SMTP používám –
viz https://support.google.com/…nswer/185833?…
mail:
smtp: true
host: smtp.gmail.com
port: 587
username: info@example.cz
password: hesloheslo
timeout: 5
secure: tls