Odesílání mailů pomocí interface
- gustavoRocks
- Člen | 4
Zdravím přátelé,
občas používám mini verzi Nette.min.php, a narazil jsem
na problém při odesílání e-mailů.
Email se sice odešle – ale dostanu Notice,
Nette\Mail\Message::send() is deprecated; use IMailer::send()
Už jsem hledal i na foru i na googlu a všude se píše injectnout Imailer – to mi bohužel nic nedělá, jelikož nepoužívá presentery, jen pár tříd z Nette.min.
Kód mám jednoduchý, asi tahkle nějak:
use Nette\Mail\Message,
Nette\Mail\IMailer;
class EmailTest extends Nette\Object
{
/**
* Test
*
* @param $email
*/
public function sendEmail($email)
{
try{
$mail = new \Nette\Mail\Message;
$mail->setFrom('pepa@zdepa.cz', 'Pepik')
->addTo('tomas@marny.cz', 'Tomas Marny')
->setSubject('Testik')
->setBody("Testtuju e-mail")
->send();
} catch(Exception $e){
throw new EmailException($e->getMessage());
}
}
}
Je to v podstatě příklad z dokumentace z nette, tady , pokud je ta změna tak razantní, nemělo by to být v dokumentaci pro ty z nás, co se to učí teprve?
Děkuji za Váš čas přátelé a jakoukoliv pomoc.
- japlavaren
- Člen | 404
cau,
princip je taky ze ziskas mailer a pomocou neho potom odosles tu spravu
<?php
$message = new Mail\Message;
//...
$mailer->send($message);
?>
z tvojho kodu, netusim co ta trieda, ktora odosiela emaily je.
- ak je to presenter pouzi injectMailer(IMailer …)
- ak servisa(facotry) tak cez __construct(IMailer …) a predaj kam treba
ak nepomohlo pis dalej
- gustavoRocks
- Člen | 4
To je všechno fajny, ale jak jsem psal, jak mám injectnout IMailer, když používám Nette.min.php – jednosouborové nette jen na pár akcí a pár vychytávek. Jako forumářela, občas práce s obrázky a nyní i odesílání e-mailů.
Proto by mě zajímalo – jak to udělat bez celého nette a presenterů – když používám v tenhle moment Nette.min jen jak „knihovnu“.
Netuší tedy někdo jak to implementovat?
japlavaren napsal(a):
cau,
princip je taky ze ziskas mailer a pomocou neho potom odosles tu spravu
<?php $message = new Mail\Message; //... $mailer->send($message); ?>
z tvojho kodu, netusim co ta trieda, ktora odosiela emaily je.
- ak je to presenter pouzi injectMailer(IMailer …)
- ak servisa(facotry) tak cez __construct(IMailer …) a predaj kam treba
ak nepomohlo pis dalej
- David Matějka
- Moderator | 6445
to, jestli pouzivas nette.min.php nebo celej balik, nema vyznam.
jestlize ale nette nepouzivas jako kompletni fw, ale jen jeho casti, budes se muset rucne postarat o veci, o ktere se nette stara automaticky, v tomhle pripade DI
vytvor si instanci maileru (treba Nette\Mail\SendmailMailer)
tu predej do konstruktoru tridy, ktera pracuje s emailama (EmailTest), uloz si
to jako property a pri odesilani mailu
pouzij $this->mailer->send($message)
- gustavoRocks
- Člen | 4
Jop, instance téhle třídy to řeší, to jsem potřeboval.
Mocrkát děkuju!
matej21 napsal(a):
to, jestli pouzivas nette.min.php nebo celej balik, nema vyznam.
jestlize ale nette nepouzivas jako kompletni fw, ale jen jeho casti, budes se muset rucne postarat o veci, o ktere se nette stara automaticky, v tomhle pripade DI
vytvor si instanci maileru (treba Nette\Mail\SendmailMailer)
tu predej do konstruktoru tridy, ktera pracuje s emailama (EmailTest), uloz si to jako property a pri odesilani mailu pouzij$this->mailer->send($message)
- japlavaren
- Člen | 404
aha, tak to som nepochopil z pouzivas len cast nette…
v tvojom pripade by som to riesil pouzitim @ co odmlci deprecated… :)