[2010–09–17] SmtpMailer konečně přímo v Nette

#1 před 2 lety

David Grudl
Administrator
Registrovaný: 8. 2. 2005
Příspěvky: 5835

[2010–09–17] SmtpMailer konečně přímo v Nette

SmtpMailer konečně nativní součástí frameworku.

use Nette\Mail\Mail
        Nette\Mail\SmtpMailer;

$mail = new Mail;
$mail->setMailer(new SmtpMailer(array(
        'host' => 'smtp.gmail.com',
        'username' => 'franta@gmail.com',
        'password' => '*****',
        'secure' => 'ssl',
)));
$mail->setFrom('John Doe <doe@example.com>');
$mail->addTo('Lady Jane <jane@example.com>');
$mail->setSubject('Hello Jane!');
$mail->setBody('Have a nice day!');
$mail->send();

p.s. díky všem tvůrcům rozšíření, které tuto chybějící část tak dlouho suplovali a možná svým lepším mailerem budou i nadále suplovat ;-)

 

#2 před 2 lety

Patrik Votoček
Nette Evangelist
Registrovaný: 8. 3. 2008
Příspěvky: 2122

Re: [2010–09–17] SmtpMailer konečně přímo v Nette

já se naopak té koule na noze rád zbavím. :-) ale bylo by dobré mít možnost Mailer nastavit v konfigu.


Sorry my bad english.
Vrtak-CZ | Nella Project | Osobní Blog | Twitter | LinkedIn | GitHub
„Nastala chyba která neměla nastat“ aneb „Když se chce všechno jde.“

 

#3 před 2 lety

kravčo
Moderator
Registrovaný: 15. 6. 2008
Příspěvky: 800

Re: [2010–09–17] SmtpMailer konečně přímo v Nette

vrtak-cz napsal(a):

… bylo by dobré mít možnost Mailer nastavit v konfigu.

Myslím, že možnosti na to sú:

mailing_script.php

$mail = new Mail;
$mail->setMailer(Environment::getService('Nette\Mail\IMailer'));

bootstrap.php

Mail::$defaultMailer = Environment::getService('Nette\Mail\IMailer');

 

#4 před 2 lety

Patrik Votoček
Nette Evangelist
Registrovaný: 8. 3. 2008
Příspěvky: 2122

Re: [2010–09–17] SmtpMailer konečně přímo v Nette

Já jsem líný programátor proto něco jako tohle:

$mail->setMailer(Environment::getService('Nette\Mail\IMailer'));
// nebo
Mail::$defaultMailer = Environment::getService('Nette\Mail\IMailer');

psát nechci. Bohužel jsem ve vlaku na GPRS jinak bych našel vlákno kde davídek tuhle feature sliboval…


Sorry my bad english.
Vrtak-CZ | Nella Project | Osobní Blog | Twitter | LinkedIn | GitHub
„Nastala chyba která neměla nastat“ aneb „Když se chce všechno jde.“

 

#5 před 2 lety

viktorc
Člen
Registrovaný: 11. 4. 2009
Příspěvky: 22

Re: [2010–09–17] SmtpMailer konečně přímo v Nette

Na vyber mailera v Mail pomocou config staci upravit Mail::getMailer nejako takto:

<?php
public function getMailer()
{
        if ($this->mailer === NULL) {
        try {
            $this->mailer = Environment::getService('Nette\\Mail\\IMailer');
        } catch (InvalidStateException $e) {
            if ($a = strrpos(self::$defaultMailer, '\\')) self::$defaultMailer = substr(self::$defaultMailer, $a + 1); // fix namespace
            $this->mailer = is_object(self::$defaultMailer) ? self::$defaultMailer : new self::$defaultMailer;
        }
        }
        return $this->mailer;
}
?>

a do config.ini potom staci napisat

<?php
service.Nette-Mail-IMailer = SmtpMailer
?>

Prednost bude mat samozrejme explicitne nastaveny mailer cez $mail->setMailer(), potom config:service.Nette-Mail-IMailer a najnizsiu prioritu Mail::$defaultMailer.

Dalsia drobnost je podpora konfiguracie samotneho SmtpMailera z config.ini. Staci doplnit na zaciatok jeho konstruktora:

<?php
public function __construct(array $options = array())
{
    if (empty($options))
        $options=Environment::getConfig('smtpmailer');

    if ($options['host']) {
        ....
?>

Parametre ako uzivatelske meno a heslo pre SMTP autentikaciu napises raz (do config.ini) a v programe robis len to, co naozaj treba.

Slo by to doplnit (takto, ci nejako podobne) ak do Nette?

 

#6 před 2 lety

HosipLan
Nette guru
Registrovaný: 1. 6. 2009
Příspěvky: 2637

Re: [2010–09–17] SmtpMailer konečně přímo v Nette

trošku učesat a jsem pro přidání


Neptej se, jestli se můžeš ptát | Blog | Twitter | GitHubCMS Kdyby

Nette Jabber Room – nette@conf.netlab.cz , všichni jste vítáni

 

Zápatí