Pokročilé
PHP-zajímavé třídy
PHP-posíláme e-maily PHP-posíláme e-maily |
|
|
|
| Zhlédnutí: 2662 | ||||||||
| Napsal filbar | ||||||||
| Úterý, 30 říjen 2007 | ||||||||
| Aktualizováno ( Čtvrtek, 25 říjen 2007 ) | ||||||||
|
V dalším článku o PHP si představíme třídu, pomocí které lze z PHP aplikace posílat e-maily, což se nám může hodit třeba při obsluze registrace, nebo při implementaci upozorňování admina na různé akce, které se na našem webu stanou. Stažení a instalaceTato třída nese jméno phpmailer a nachází se na stránkách SourceForge. Poslední aktualizace sice pochází z července 2005, ale to nic neubírá na její výkonnosti. Po stažení a rozbalení získáme adresář phpmailer. V tomto adresáři se mimo jinými nachází i adresář phpdoc, kde najdeme velmi přehlednou dokumentaci API. Hlavně však potřebujeme PHP třídy, které bychom vložili do naší aplikace. Tyto třídy nesou název class.phpmailer.php a class.smtp.php. Po náhlednutí do adresáře languages zjišťujeme, že se zde nachází i soubor s českými chybovými hláškami, což je určitě velmi příjemné. První třída je určena pro práci s e-mailem na vyšší úrovni, kdežto třída smtp pracuje na té nejnižší úrovni se SMTP serverem. Do projektu je nutné zaincludovat třídu phpmailer. V případě, že chceme poštu odesílat přes SMTP server, je nutné rovněž nakopírovat na odpovídající místo i třídu smtp a toto umístění zadat do proměnné PluginDir objektu zastupujícího třídu phpmailer. InicializaceJelikož se jedná o PHP třídu je logické, že nejprve je nutné vytvořit její objekt, který jí bude zastupovat: $mail = new phpmailer(); Následuje určení co se má použít pro odesílání e-mailů. Toto se nastavuje pomocí metod IsTyp(), takže odeslání pomocí SMTP serveru zajistíme spuštěním metody IsSMTP() na objektu $mail. Další možnost představuje odeslání pošty přes příkaz sendmail-metoda IsSendmail(). Předposlední metoda IsMail() způsobí pouze zapozdření standartní PHP funkce mail(). Poslední možnost je trošku exotická a většinou jí ani nebudeme potřebovat, jedná se o odesílání pošty přes Qmail-IsQmail(). Jediné čím se odlišuje od metody IsSendmail() je předpokládané umístění qmailu v adresáři /var/qmail/bin. Jelikož se tato cesta dá zadat i přímo do proměnné Sendmail, jedná se o celkem zbytečnou metodu. Jestliže jsme se rozhodli využít služeb SMTP serveru, je nutné přihlášení, které zapneme vložením hodnoty true do proměnné SMTPAuth. Jméno stoje, který funguje jako SMTP server se ukládá v proměnné Host, uživatelské jméno pro příhlášení v proměnné Username a konečně heslo logicky v Password: $mail->SMTPAuth = true; $mail->Hostname = $mailHost; $mail->Username = $mailUser; $mail->Password = $mailPasswd; Tvorba zprávyZprávu lze vytvořit jak textovou, tak i v HTML formátu, což určíme metodou IsHTML() ovšem tentokrát s parametrem typu bool(tedy true, nebo false). V případě, že metodu neuvedeme implicitně se vytvoří textový e-mail. Jelikož se v dnešní době většinou používá kódování UTF-8 bylo by vhodné, abychom odeslali mail právě v tomto kódování. Zajištění tohoto je velmi jednoduché, protože kódování se nachází v proměnné CharSet. Nyní přichází řada na to nejdůležitější a to, určení odkud, kam se má zpráva odeslat. Jméno uživatele, který se má nacházet v hlavičce zprávy, uložíme do proměnné FromName, jeho adresu do From. Jednotlivé adresy příjemců přiřadíme metodou AddAddress(), do jejíhož prvního povinného parametru zadáváme adresu a druhý nepovinný parametr může obsahovat jméno příjemce. Tuto metodu musíme volat tolikrát, kolik máme příjemců daného e-mailu. Předmět nastavíme do proměnné Subject a tělo zprávy do proměnné Body. Pro tělo zprávy je však ještě nutné nastavit po kolika znacích se má text automaticky zalamovat-WordWrap. Jako rozumná hodnota se jeví číslo 70. A to je vše, nyní již stačí právu odeslat metodou příznačně pojmenovanou Send(), která v případě neúspěchu vrací false, takže jí je vhodné uzavřít do podmínky if. Pokročilé možnostiSamozřejmě nejlme odkázání pouze na základní e-mail. Lze použít jak textovou(metoda AddStringAttachment()), tak i normální přílohu(AddAttachment()). Metoda AddStringAttachment() obsahuje dva povinné a dva volitelné parametry. Mezi povinné parametry patří textový řetězec představující přílohu a jméno, pod kterým se má příloha v e-mailu nacházet. Další dva parametry určují kódování a MIME typ přílohy. Druhou metodou přidáme do e-mailu přílohu, která se již na disku nachází. Do prvního a jediného povinného parametru samozřejmě musíme uvést cestu k tomuto souboru. V následujícím parametru lze uvést, pod jakým jménem má být příloha ve zprávě viditelná. Poslední dva parametry jsou shodné s předchozí metodou. JIž na začátku jsem se zmínil, že součástí balíčku je i český překlad zpráv. Dosud jsme jej však nenastavili. Ihned to však napravíme metodou SetLanguage() do jejíhož prvního parametru uvedeme dvoupísmenný kód požadovaného jazyka a případně ve druhém parametru zadáme cestu k jazykovému souboru, jestliže se nenachází ve výchozím adresáři language. Příklad$mailHost="smtp.mailhost.cz"; $from="filbar@neco.cz"; $to="nekdo@neco.cz"; $subject="Zpráva ke článku"; $mailUser="filbar"; $mailPassword="heslo"; $mail = new phpmailer(); $mail->IsSMTP(); $mail->CharSet = "utf-8"; $mail->SMTPAuth = true; $mail->Host = $mailHost; $mail->FromName = ""; $mail->From = $from; $mail->AddAddress($to); $mail->Subject = $subject; $mail->Body = $msg; $mail->WordWrap = 70; $mail->Hostname = $mailHost; $mail->Username = $mailUser; $mail->Password = $mailPasswd; //$mail->Send(); if (!$mail->Send()) { echo "Zprávu se nepodařilo odeslat. "; }
Powered by !JoomlaComment 3.22
3.22 Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved." |
||||||||
| Další > |
|---|