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