Odesílání mailů pomocí interface

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
gustavoRocks
Člen | 4
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

aha, tak to som nepochopil z pouzivas len cast nette…

v tvojom pripade by som to riesil pouzitim @ co odmlci deprecated… :)