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ů.

komentáře

22.03.2007 14:34:08
Nevíte náhodou jak pomocí php maileru odeslat přílohu ve formátu pdf?
22.03.2007 19:14:23
to samozřejmě vím, odešle se úplně stejně jako obrázky v mém příkladu pomocí funkce $mail->AddAttachment(), kde jí jako parametr nebude předán obrázek, ale pdf soubor. pokud tedy budu chtít odeslat soubor pokus.pdf, ktrerý je uložen na serveru ve stejném adresáři jako script, který má mail odeslat, vloží se tento pdf dokument do mailu takto: $mail->AddAttachment("pokus.pdf");
16.05.2007 16:52:53
Zdravim nevite jak udelat aby mi PHPmailer odeslal nasledovne: $subject=jedno zo 4 moznosti z formulara(radio), $from=meno a email z formu, $number=telefoni cislo z formu, $text=nejaky text z formu, $priloha= neco z formu.na moj email to chcem odesilat ale ne pres SMTP. DIK moc vsem
Tom
18.05.2007 10:25:17
přesně tento případ je posán ve výše uvedeném příkladu. nevím co k tomu více napsat.
26.10.2007 09:08:23
ahoj, koukam na toho emailoveho klienta a je to good, akorat mam problem s odeslanim emailu treba na cokoliv@seznam.cz hlasi mi to (Language string failed to load: recipients_failed) kdyz to odeslu na vlastni dome tak to je bez problemu
vosy
celkem komentářů: 5