phpmailer - php email class
třída s podporou posílání mailů přes smtp server nebo lokální mail system
Jelikož žádný z webmailových klientů mi nevyhovoval na 100%, rozhodl jsem se napast si vlastního klienta. Abych ušetřil trochu práce, hledal jsem chvilku na NETu a hodě mě zaujal php class phpmailer. Tuto třídu jsem nakonec ve svém webmailu pro odesílání mailů použil.
class je k dostání na http://phpmailer.sourceforge.net/ včetně dokumentace http://phpmailer.sourceforge.net/docs/ a příkladů http://phpmailer.sourceforge.net/extending.html.
Použití je vskutku jednoduché:
<?php
//nejdrive se musi nacist knihovna s tridou
require("class.phpmailer.php");
// potom vytvorime novou instanci tridy phpmailer
$mail = new PHPMailer();
/* v pripade, ze chceme mail odeslat prostrednictvim lokalniho
postovniho systemu na serveru (napr. sendmail) nebudeme volat
funkci $mail->IsSMTP() a promennou $mail->Host nechame prazdnou
v opacnem pripade pomoci funkce IsSMTP() nastavime odesilani
pomoci smtp serveru */
$mail->IsSMTP();
/* nastavime smtp server, ktery musi mit povoleny relay pro server
na kterem se bude script spoustet. pokud chceme zadat vice serveru,
oddeluji se strednikem. v pripade, ze odesilani mailu pres prvni
server selze a je jich zadano vice, pokousi se script odeslat mail
pres dalsi v poradi */
$mail->Host = "tvuj.smtp.server";
/* posleme mail i v html formatu
pokud bude mail cisty text, nasledujici radek vynechat */
$mail->IsHTML(true);
// zadame odesilatele a prijemce
$odesialtel_jmeno = "odesilatel";
$odesilatel_adresa = "odesilatel@nekde.cz";
$prijemce_jmeno = "nekdo";
$prijemce_adresa = "nekdo@nekde.cz";
/* obrazek, ktery vlozime do mailu jako prilohu
ja pouziju obrazky, ktery jsou na serveru (img.gif a img.jpg),
ale pokud byl obrazek odeslan z formulare metodou post, bude
v promenne $_FILES[nazev_prvku_formulare][tmpname] */
$priloha1="img.gif";
$priloha2="img.jpg";
// obrazek, ktery vlozime do html prilohy (obrazek.jpg)
$vlozeny_obr="obrazek.jpg";
// nadefinujeme predmet a telo mailu v textove a html podobe
$predmet = "testovaci mail";
$text_mailu = "nazdar ahoj\n toto je mailik poslany prostrednictvim
tridy phpmailer";
$html_text_mailu = "<h2>nazdar ahoj</h2><br /> <img alt=obrazek
src=cid:obrazek /><br />\n toto je mailik poslany prostrednictvim
<b>tridy phpmailer</b>";
// sestavime mail
$mail->From = $odesilatel_adresa;
$mail->FromName = $odesilatel_adresa;
/* funkce $mail->AddAddress() se muze pouzit se dvema parametry nebo
s jednim parametrem a v tom pripade je onim parametrem adresa
prijemce. tato funkce se muze volat opakovane a pokazde prida
noveho adresata */
$mail->AddAddress($prijemce_adresa,$prijemce_jmeno);
$mail->Subject = $predmet;
// pribalime do mailu prilohy (funkce se muze volat opakovane)
$mail->AddAttachment($priloha1);
$mail->AddAttachment($priloha2);
/* obrazek, ktery bude vlozen do html AddEmbeddedImage("cesta k
obrazku", "cid, ktery bude pouzit jako identifikator v html",
"jmeno pod kterym bude vlozen obrazek do html") */
$mail->AddEmbeddedImage($vlozeny_obr, "obrazek", "fotka.jpg");
/* pokud je mail cisty text, naplni se telo mailu do promenne
$mail->Body a promenna $mail->AltBody se necha prazdna */
$mail->Body = $html_text_mailu;
$mail->AltBody = $text_mailu;
// nastavime zalamovani radku (pocet znaku na radku)
$mail->WordWrap = 80;
// no a ve finale mail odesleme :o)
if(!$mail->Send()){
// odeslani se nezdarilo
echo "chyba: " . $mail->ErrorInfo;
}else{
// ok, odeslani se zdarilo
echo "zprava byla odeslana";
}
?>
Aby tento skript fungoval, je nutné zaměnit "tvuj.smtp.server" za nejaký skutečný smtp server, který bude mít povolený relay pro adresu serveru, na kterém bude tento script spouštěn. Také je nutné zaměnit jména a adresy příjemce a odesilatele a názvy přikládaných souborů.