EN | CS | Přihlásit | Registrovat

Nette\Mail

Třída pro odesílání emailů.

Příklad použití:

$mail = new Mail;
$mail->setFrom('Franta <franta@example.com>');
// nebo $mail->setFrom('franta@example.com', 'Franta');
$mail->addTo('petr@example.com');
$mail->setSubject('Potvrzení objednávky');
$mail->setBody("Dobrý den,\nvaše objednávka byla přijata.");
$mail->send();

Můžete využít i fluent interface:

$mail->setFrom('Franta <franta@example.com>')->addTo('petr@example.com')->send();

Do emailu lze vkládat přílohy:

$mail->addAttachment('example.zip');

Je také možné odesílat HTML emaily:

$mail->setHTMLBody('<b>Sample HTML</b> <img src="background.gif">');

Vložené obrázky lze do emailu vkládat metodou $mail->addEmbeddedFile('background.gif'), nicméně není to potřeba. Nette automaticky vyhledá a vloží všechny soubory odkazované v HTML kódu. Toto chování lze vypnout uvedením FALSE jako druhého parameteru metody setHtmlBody().

Pokud HTML email nemá textovou alternativu, bude vygenerována automaticky.

Pokud HTML email nemá nastavený subjekt, bude vzat z elementu <title>.

Třídu Mail lze dobře kombinovat s šablonami:

$template = new Template;
$template->setFile('email.phtml');

$mail = new Mail;
$mail->setFrom('Franta <franta@example.com>');
$mail->addTo('petr@example.com');
$mail->setHtmlBody($template); // nebo $mail->setBody($template) pro textovou šablonu
$mail->send();

Do šablony bude automaticky vložená proměnná $mail, je tedy možné přímo v šabloně nastavit další hlavičky emailu.

Chceme-li využít proměnné v šabloně, je vhodné zaregistrovat patřičný filtr.

$template->registerFilter(new LatteFilter);

Vlastní mailer lze nastavit dvěma způsoby:

class MyMailer implements IMailer
{
function send(Mail $mail)
{
file_put_contents('email.eml', $mail->generateMessage());
}
}


// 1. varianta
Mail::$defaultMailer = 'MyMailer'; // nebo new MyMailer

// 2. varianta
$mail = new Mail;
$mail->setMailer(new MyMailer);

Viz také:


Login to submit a comment