PHPMailer - vše pro správné odeslání emailů

2 PHP

Knihovna umožňuje odeslání emailů se vším všudy. Přílohy, HTML i alternativní obsah, inline obrázky. Odeslání přes PHP mail() funkci, SMTP i sendmail. To vše a ještě více.

PHPMailer - vše pro správné odeslání emailů

PHPMailer patří rozhodně mezi nejpoužívanější knihovny pro odesílání emailů v PHP. Je použit ve WordPressu, Drupalu, Joomla a mnoha dalších CMS. Vzhledem k tomu, že se autor zabývá email marketingem a tuto knihovnu sám používá, je velmi často aktualizována a chyby rychle opravovány.

Podporuje odesílání pomocí interní funkce mail() v PHP, přímo programem sendmail či přes SMTP a nabízí také podepsání zprávy DKIM. Obsah emailu lze mít typu multipart, tedy HTML i textový obsah zároveň. Připojování příloh je samozřejmostí, dokáže ale také připojit inline obrázky přes CID.

Použití

Stáhnout lze PHPMailer na githubu, ideálně přímo přes Composer. Verze 6 již obsahuje namespace a pokud někdo používal verzi 5.2, je připraven pěkný migrační tutoriál. Následující ukázka již využívá verzi 6.

Samotné použití je velmi intuitivní a netřeba složitě popisovat. Proto je v následující ukázce použito několik funkcí a pouze v krátkosti okomentováno jejich chování.

// --- POZOR ---
// PHPMailer při tomto nastavení vyhazuje výjimky, přidat try-catch blok
// catch(\PHPMailer\PHPMailer\Exception $e)

// True v konstruktoru pro použití výjimek
$mailer = new \PHPMailer\PHPMailer\PHPMailer(true);
$mailer->CharSet = 'UTF-8'; // Výchozí kódování není UTF-8, potřeba nastavit
$mailer->isHTML(true); // Email bude ve formátu HTML
$mailer->setFrom("pavel.kutac@gmail.com", "Pavel Kutáč"); // Nastavení odesílatele
// Nastavení použití mail() funkce v PHP
// Dále isSMTP() a instanční proměnné $Host, $Port, $Username, $Password, $SMTPSecure, $SMTPAuth a další
// Případně isSendmail()
$mailer->isMail();

// V případě více příjemců v addAddress() bude každému odeslán email zvlášť,
// výchozí chování je 1 email se všemi příjemci
// Funguje pouze s isMail() a isSendmail(), nelze použít s SMTP
$mailer->SingleTo = true;

$mailer->Subject = "Předmět emailu";

// Jméno a příjmení není povinné, rovněž u addCC(), addBCC() a addReplyTo()
// Kopie a skrytá kopie - addCC() a addBCC()
$mailer->addAddress("prijemce@domain.cz", "Jméno a příjmení");
// Nastavení jiného emailu pro odpověď, než z jaké byl odeslán
$mailer->addReplyTo("reply@domain.cz", "Jméno a příjmení");

// Připojení existujícího souboru jako přílohy - Název není povinný
$mailer->addAttachment("/path/to/file", "Název přílohy v emailu");
// Připojení souboru, který neexistuje - vytvořen za běhu, název je povinný
$mailer->addStringAttachment($fileBLOB, "Název přílohy");

// Vloží soubor pro inline použití v emailu,
// následně v obsahu emailu je použit jako <img src="cid:mujcid1">
// Podobně existuje také funkce addStringEmbeddedImage() 
$mailer->addEmbeddedImage("/path/to/file", "mujcid1", "nepovinný název přílohy");

// Hlavní obsah zprávy, je-li isHTML(true) vložit HTML zprávu
// V případě isHTML(false) - vložit plain text zprávu
$mailer->Body = "Obsah zprávy";
// Je-li isHTML(true), lze vložit plain text obsah zprávy
// pro emailové klienty, kteří nepodporují HTML zprávy
// V případě isHTML(false) nepoužívat
$mailer->AltBody = "Alternativní textový obsah zprávy";

$mailer->send();

Máte zkušenosti s PHPMailer, nebo využíváte jinou knihovnu? Podělte se v komentářích

K tomuto článku již není možné přidávat další komentáře

Komentáře

Díky za článek, jen na okraj na řádku 9 mají být parametry v opačném pořadí první e-mail a potom jméno.

Děkuji, opraveno