Nette\Mail\SmtpException při odeslání mailu přes SMTP, bez kódu chyby
- egin_28
- Člen | 10
Zdravím,
nejspíš to nebude primárně problém Nette, ale třeba se s tím někdo už setkal.
Nedaří se mi poslat mail přes smtp.gmail.com. Zkouším různě (ze zoufalosti) prohazovat porty a Google smtp servery, ale pořád bez výsledku.
<?php
namespace App\Presenters;
use Nette;
use Nette\Application\UI\Form;
use Nette\Mail\Message;
use Nette\Mail\SmtpMailer;
class HomepagePresenter extends BasePresenter
{
//Po kliknuti na send tlaciko zavolam funkci requestFormSucceeded
public function requestFormSucceeded($form, $values)
{
$this->sendMail($form->getValues());
}
public function sendMail($values)
{
$mail = new Message();
$mail->setFrom('admin@domena.cz')
->addTo('sem@posilam.cz')
->setSubject('Nový zaměstnanec');
$template = $this->createTemplate();
$template->setFile(__DIR__ . '/templates/Mail.latte');
$template->name = $values['name']; // data ziskana z formulare a predane do $values
$mail->setHtmlBody($template);
$mailer = new SmtpMailer([
'host' => 'smtp.gmail.com',
'port' => '465',
'username' => 'admin@domena.cz',
'password' => '****',
'secure' => 'ssl',
]);
$mailer->send($mail);
}
}
?>
V config.neon mám:
mail:
smtp: true
secure: ssl
Laděnka pouze napíše pouze: Nette\Mail\SmtpException
Poradil byste někdo, jak mít správně nastavený mail? V php.ini nemám nastavený žádný smtp server ani odchozí mail. V Gmailu mám povolený přístup pro méně bezpečné aplikace.
Díky za rady
- Ondřej Kubíček
- Člen | 494
a máš tam v username nějakou schránku na gmail.com jo?
co ta smtpexception vyhodí za message ?
- egin_28
- Člen | 10
Jo, je to gmail schránka. Ta exception právě nehodí žádnou hlášku,
jen odkaz na:
\vendor\nette\mail\src\Mail\SmtpMailer.php on line 128
což je:
<?php
if (!$this->connection) {
throw new SmtpException($error, $errno); //řádek 128
}
?>
Z toho to vypadá, že se ani nepřipojí k tomu mailu.
Editoval egin_28 (3. 5. 2018 21:21)
- egin_28
- Člen | 10
Pro někoho kdo by se trápil s podobným problémem:
https://stackoverflow.com/…-certificate
Na localhostu jsem musel dodržet všechny kroky, na serveru ale stačilo povolit moduly v php.ini a Apachi.