Příloha mailu – email odejde, přílohu nelze otevřít
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- KubajzD
- Člen | 3
Zdravím všechny,
dokázal by mi někdo, prosím, poradit co dělám špatně?
V presenteru při zpracování formuláře mám tento kód pro odeslání
e-mailu.
E-mail se odešle, dorazí taky na cílovou adresu. Při pokusu o otevření
přílohy však obrázek nelze zobrazit.
Soubor existuje, to mám ověřeno.
<?php
try {
$mail = new \Nette\Mail\Message();
$mail->setFrom('test@test.com')
->addTo('mail@neco.cz')
->setSubject('Nová registrace')
->addAttachment('test.png', file_get_contents(__DIR__ . '/../../../www/upload/photo.png'))
->setBody('Registrace');
$this->mailer->send($mail);
//zpráva a přesměrování
$this->flashMessage('Registrace byla úspěšná', 'success');
$this->redirect('Homepage:');
} catch (InvalidStateException $ex) {
$this->flashMessage('Email se nepodařilo odeslat.');
}
?>
Děkuji za každou nápovědu a pomoc.
- KubajzD
- Člen | 3
Díky @iguana007,
chyba identifikována.
Nikde se o tom nepíše, ale záleží na pořadí volání
$mail->addAttachment(…) a
$mail->setBody(‚Tělo mailu‘)
Pokud to nastavení přehodím na
<?php
try {
$mail = new \Nette\Mail\Message();
$mail->setFrom('test@test.com')
->addTo('mail@neco.cz')
->setSubject('Nová registrace')
->setBody('Registrace')
->addAttachment('test.png', file_get_contents(__DIR__ . '/../../../www/upload/photo.png'));
$this->mailer->send($mail);
//zpráva a přesměrování
$this->flashMessage('Registrace byla úspěšná', 'success');
$this->redirect('Homepage:');
} catch (InvalidStateException $ex) {
$this->flashMessage('Email se nepodařilo odeslat.');
}
?>
tak to v pohodě funguje.
Díky
Editoval KubajzD (12. 12. 2017 11:26)
- David Matějka
- Moderator | 6445
problem neni v poradi volani metod, ale v tom, ze addAttachment vraci instanci MimePartu pro tu prilohu, takze ty volas setBody na attachmentu, ne na mailu. tohle by fungovalo spravne:
$mail->setFrom('test@test.com')
->addTo('mail@neco.cz')
->setSubject('Nová registrace')
->addAttachment('test.png', file_get_contents(__DIR__ . '/../../../www/upload/photo.png'));
$mail->setBody('Registrace');