PHPMailer je trieda vytvorená Worx International Inc.
Stiahnete ju na ich oficiálnej stránke:
http://phpmailer.codeworxtech.com/
V čase písania tohto článku bola najnovšia verzia 5.0 vydaná 3.4.2009 tu je link [PHP 5/6]:
http://dfn.dl.sourceforge.net/sourcefor ... v5.0.0.zip
Ktorú verziu si vybrať?
Pre vybratie verzie musíte vedieť na akom serveri má fungovať. PHPMailer je dostupné pre PHP verziu 4 a pre verziu 5(6) zvlášť. Takže si stiahnite takú verziu pre akú má Váš server podporu.
Celý manuál je písaný pre PHP5! (Avšak základná funkčnosť by mala byť rovnaká).
Pracujeme
Potom ako ste si stiahli celý zip, ho otvorte (alebo niekde rozbaľte). Zo všetkých súborov nám treba práve jeden. Súbor
class.phpmailer.php, ktorý nájdete v koreňovej zložke zipka. Pre testovacie účely si vytvorte niekde na localhoste zložku, kde budeme programovať. Do tejto zložky (ďalej to bude phpmailer zložka), si nakopírujte tento class.phpmailer.php. Vytvorte si index.php, kde budete vkladať obsah.
Inicializácia
Do prvého riadku kódu, si najskôr načítame súbor phpmailer. Teda Váš súbor by teraz mal vyzerať takto:
Kód:
<?php
require("class.phpmailer.php"); // voláme súbor
?>
Teraz máme načítaný súbor, teda môžeme vytvoriť instanciu triedy PHPMailer(), čo nám umožní ďalej pracovať s Mailerom. Instanciu vytvoríme, klasicky pomocou [$premenna] = new PHPMailer(). Tento zápis funguje u všetkých PHP tried (nie iba u Mailera), pričom $premenna môžete nahradiť za ľubovoľnú premennú (ja som zvolil $mail). Váš index.php by teraz mal vyzerať takto:
Kód:
<?php
require("class.phpmailer.php"); // voláme súbor
$mail = new PHPMailer(); //instancia PHPMaileru
?>
Kto som - odosielateľPre určenie odosielateľa používa PHPMailer dve šikovne nazvané premenné a to
From a
FromName. Do
From vypĺňame našu mailovú adresu, alebo adresu kontaktného človeka. Do
FromName dávame svoje meno, príp. meno spoločnosti.
Komu odosielame - prijímateľAby Mailer vedel, komu má mail poslať, musíte vyplniť adresy prijímateľov. Tie vyplníte pomocou funkcie
AddAddress(). Jej tvar je:
AddAddress("[Mailová adresa]", "[Meno prijímateľa]");Meno prijímateľa nie je potrebné, stačí adresa. V mailových klientoch vypĺňate rovnaké hodnoty v "To:". Pre každú adresu musíte vytvoriť novú instanciu funkcie (viď príklad).
Váš súbor by mal vyzerať takto:
Kód:
<?php
require("class.phpmailer.php"); // voláme súbor
$mail = new PHPMailer(); //instancia PHPMaileru
$mail->From = "bot@pcforum.sk"; //moja adresa
$mail->FromName = "Fiktívny bot PCfora"; //moje meno
$mail->AddAddress("bot@google.com", "Google Bot"); //adresa a meno prijímateľa
$mail->AddAddress("bot@yahoo.com"); // Adresa prijímateľa
?>
Dopĺňajúce poznámky:
Dodatky píše:
1. SetFrom()
PHPMailer obsahuje funkciu SetFrom(), ktorá je alternatíva ku zápisu Form a FromName. Zápis:
SetName("[Vaš mail]", "[Vaše meno]"); // Vaše meno je nepovinný prvok, teda
SetName("[Vaš mail]"");
2. AddReplyTo()
Funkcia AddReplyTo() je v mailoch označovaná za "Reply-to". Použitie je:
AddReplyTo("[Adresa]","[Meno]"); // pričom parameter Meno je opäť nepovinný, teda
AddReplyTo("[Adresa]");
Sekanie slov - WordWrapKeď budete robiť funkcie kde budú užívatelia môcť posielať maily, toto určite nezabudnite. Premenná
WordWrap Vám zaručí, že človek na druhej strane to bude schopný prečítať. Ide totiž o sekanie slov. Pokiaľ by užívateľ napísal dlhšie slovo ako je povolené tak ho rozsekne. Preto túto premennú odporúčam nastaviť. zvyčajne sa používa na 50 znakov, pretože aj "slovo" ekonomicko-poľnohospodársko-priemyselný má iba 39 znakov.
PrílohyPríloha je multimediálny obsah, ktorý nás zaujíma viac ako samotný text správy
(preto sa cez ne posielajú víry). Pomocou PHPMaileru môžete aj Vy posielať prílohy (ale víri neodporúčam). Na prílohy slúži funkcia
AddAttachment(). Jej zápis je
AddAttachment("[presná cesta ku prílohe]", "[nové meno súboru]"); , pričom nové meno súboru je nepotrebné. Prílohou nemôže byť URL (teda:
http://stranka.sk/obr.jpg), ale len súbor na vašom serveri.
HTMLMailom môžete posielať aj celé stránky. Na "zapnutie" HTML značiek sa používa funkcia
IsHTML(). Jej zápis je
IsHTML(bool);.Miesto bool doplňte buď
true, pokiaľ si želáte posielať HTML kód, alebo
false pokiaľ si to neželáte.
Váš súbor by teraz mohol vyzerať takto:
Kód:
<?php
require("class.phpmailer.php"); // voláme súbor
$mail = new PHPMailer(); //instancia PHPMaileru
$mail->From = "bot@pcforum.sk"; //moja adresa
$mail->FromName = "Fiktívny bot PCfora"; //moje meno
$mail->AddAddress("bot@google.com", "Google Bot"); //adresa a meno prijímateľa
$mail->AddAddress("bot@yahoo.com"); // Adresa prijímateľa
$mail->WordWrap = 50; // po 50 znaku slova rozdel slovo
$mail->AddAttachment("/img/ico.jpg"); // príloha
$mail->AddAttachment("/img/skoda_120.jpg", "BMV.jpg"); // príloha s novým menom
$mail->IsHTML(true);
?>
Predmet a ObsahPo všetkých tých nastaveniach je čas na podstatnú časť a to predmet a obsah. Pre predmet slúži premenná
Subject a pre obsah je stanovená
Body. Keďže klienti sú dnes rôzny PHPMailer má premennú kde môžete vložiť čistý text, ktorý sa zobrazí práve tým, ktorý nemajú podporu HTML. Jej reálne využitie si neviem poriadne predstaviť ale aj tak ju tu uvádzam. Ide o
AltBody.
Náš index.php teraz obsahuje:
Kód:
<?php
require("class.phpmailer.php"); // voláme súbor
$mail = new PHPMailer(); //instancia PHPMaileru
$mail->From = "bot@pcforum.sk"; //moja adresa
$mail->FromName = "Fiktívny bot PCfora"; //moje meno
$mail->AddAddress("bot@google.com", "Google Bot"); //adresa a meno prijímateľa
$mail->AddAddress("bot@yahoo.com"); // Adresa prijímateľa
$mail->WordWrap = 50; // po 50 znaku slova rozdel slovo
$mail->AddAttachment("/img/ico.jpg"); // príloha
$mail->AddAttachment("/img/skoda_120.jpg", "BMV.jpg"); // príloha s novým menom
$mail->IsHTML(true);
$mail->Subject = "Toto je predmet!";
$mail->Body = "Toto je HTML text v obsahu, ktorý je navyše <b>tučný!</b>";
$mail->AltBody = "Toto je obsah v čistom texte (plain text) pre klientov nepodporujúcich HTML";
?>
OdosielameKeď už máme všetko vyplnené odosielame správu. Správu odošlete pomocou funkcie Send(). Funkcia Send() má návratovú hodnotu true pri úspechu alebo false pri neúspechu, čo vieme využiť.
Ukážkový kód:
Kód:
<?php
require("class.phpmailer.php"); // voláme súbor
$mail = new PHPMailer(); //instancia PHPMaileru
$mail->From = "bot@pcforum.sk"; //moja adresa
$mail->FromName = "Fiktívny bot PCfora"; //moje meno
$mail->AddAddress("bot@google.com", "Google Bot"); //adresa a meno prijímateľa
$mail->AddAddress("bot@yahoo.com"); // Adresa prijímateľa
$mail->WordWrap = 50; // po 50 znaku slova rozdel slovo
$mail->AddAttachment("/img/ico.jpg"); // príloha
$mail->AddAttachment("/img/skoda_120.jpg", "BMV.jpg"); // príloha s novým menom
$mail->IsHTML(true);
$mail->Subject = "Toto je predmet!";
$mail->Body = "Toto je HTML text v obsahu, ktorý je navyše <b>tučný!</b>";
$mail->AltBody = "Toto je obsah v čistom texte (plain text) pre klientov nepodporujúcich HTML";
if(!$mail->Send())
{
echo "Správa nebola zaslaná. <p>";
echo "Nastala chyba: " . $mail->ErrorInfo;
exit;
}
echo "Správa úspešne zaslaná";
?>
Testujeme - prvá správaJe čas otestovať, to čo sme urobili. Nebudeme teraz pre rýchlosť a jednoduchosť vyrábať obrázky, ale zašleme si jednu ľahkú správu, a budete mi musieť veriť, že funguje všetko ostatné
Preto si teraz nahraďte obsah súboru index.php za tento:
Kód:
<?php
require("class.phpmailer.php"); // voláme súbor
$mail = new PHPMailer(); //instancia PHPMaileru
$mail->From = "adsence@google.com"; //moja adresa
$mail->FromName = "Google Company"; //moje meno
$mail->AddAddress("mojmail@gmail.com"); //Vas mail
$mail->WordWrap = 50; // po 50 znaku slova rozdel slovo
$mail->IsHTML(true);
$mail->Subject = "Vyhrali ste!";
$mail->Body = "Vyhrali ste v súťaži od Google AdSence 5,000,000.00$ za úspešný test!";
$mail->AltBody = "Používate chabého klienta, takže nevyhrávate ani len link na poriadneho!";
if(!$mail->Send())
{
echo "Správa nebola zaslaná. <p>";
echo "Nastala chyba: " . $mail->ErrorInfo;
exit;
}
echo "Správa úspešne zaslaná";
?>
Upravte
mojmail@gmail.com na Váš vlastný (aby ste dostali správu) v riadku:
Citácia:
$mail->AddAddress("mojmail@gmail.com"); //Vas mail
Teraz to (index.php + class.phpmailer.php) nahrajte na nejaké FTP. Dôrazne upozorňujem, že z localhostu to nepošlete.Spustite index.php cez internet. Ak ste to urobili správne mala by Vám prísť správa od Googlu
------------------------
Dodatky:Jazyk a kódovanie:Samozrejme PHPMailer má aj svoje jazykové nastavenia. Dobre nastavený jazyk Vám vyrieši mnoho problémov.
1, Kódovanie správy
Nie teraz nejde o šifrovanie ale o nastavenia interpretácie znakov. Default hodnota je iso-8859-1. Túto môžete zmeniť pomocou premennej CharSet, teda
Citácia:
$mail->Charset = "utf-8";
2, Jazyk zobrazovača chýb
Niekedy sa Vám podarí urobiť chybu, možno aj neúmyselne
. PHPMailer Vám napíše kde ste urobili chybu cez ErrorInfo (použili sme aj v príklade). Táto chyba je však po anglicky. Pokiaľ po anglicky vôbec nerozumiete, tak je tu podpora aj pre Vás v podobe českého prekladu. Tento preklad nájdete odzipovanej zložke v adresári language.
Postup inštalácie:
1, skopírujte súbor PHPMailer_v5.0.0.zip\language\phpmailer.lang-cz.php do svojej phpmailer zložky
2, do index.php po instancií PHPMaileru pridajte riadok:
Citácia:
$mail->SetLanguage("cz", "/");
Kde prvý parameter určuje jazyk a druhý cestu ku súboru.
SMTPPHPMailer má podporu aj pre SMTP, tú sú základné funkcie aj ich použitie:
Kód:
$mail->IsSMTP(); // nastavíme Mailer aby použil SMTP
$mail->Host = "smtp1.example.com;smtp2.example.com"; // špecifikujeme základný a zálohovací server
$mail->SMTPAuth = true; // zapneme SMTP autentifikáciu
$mail->Username = "jswan"; // SMTP username
$mail->Password = "secret"; // SMTP password
Pre správnu funkčnosť SMTP nakopírujte súbor class.phpmailer do rovnakej zložky ako phpmailer.
Všetky premenné PHPMaileraTu je zoznam premenných, ktoré môžete nastavovať, aj s ich opismi default hodnotami. Pre porozumenie potrebujete ovládať základy PHP. Je to veľmi kostrbatý preklad ale snáď pomôže.
Kód:
/**
* Nastavuje prioritu Email-u (1 = Vysoká, 3 = Normálne, 5 = Nízka).
* @var int
*/
public $Priority = 3;
/**
* Nastavuje kódovanie správy.
* @var string
*/
public $CharSet = 'iso-8859-1';
/**
* Nastavuje základný Content-type správy.
* @var string
*/
public $ContentType = 'text/plain';
/**
* Nastavuje bitovú hĺbku Encoding v správe. Možnosti sú
* "8bit", "7bit", "binary", "base64", ahold "quoted-printable".
* @var string
*/
public $Encoding = '8bit';
/**
* Nezobrazí základné chyby (nie je špecifikované nastavenie)
* @var string
*/
public $ErrorInfo = '';
/**
* Nastavuje základú odosielaciu emailovú schránku.
* @var string
*/
public $From = 'root@localhost';
/**
* Nastavuje základné meno odosielateľa
* @var string
*/
public $FromName = 'Root User';
/**
* Nastavuje spôsob odoslania správy (Return-path). Pokiaľ ho nechcete nechať prázdny,
* nastavte -f pre sendmail alebo 'MAIL FROM' pre smtp mód.
* @var string
*/
public $Sender = '';
/**
* Nastavuje predmet správy.
* @var string
*/
public $Subject = '';
/**
* Nastavuje obsah správy. Múže to byť ako bežný text tak aj HTML.
* Pokiaľ chcete HTML tak spustite IsHTML(true).
* @var string
*/
public $Body = '';
/**
* Nastavuje iba textovú podobu správy. Tá je automaticky
* poslaná ako multipart/alternative. Táto správa je čítateľná pre
* klientov, ktorý nemôžu alebo nedokážu prečítať Obsah v
* HTML podobe
* @var string
*/
public $AltBody = '';
/**
* Nastavuje rozdeľovanie slov, podľa počtu písmen, ktoré nastavíte
* @var int
*/
public $WordWrap = 0;
/**
* Nastavuje metódu odoslania správy: ("mail", "sendmail", alebo "smtp").
* @var string
*/
public $Mailer = 'mail';
/**
* Cesta pre sendmail program.
* @var string
*/
public $Sendmail = '/usr/sbin/sendmail';
/**
* Cesta pre PHPMailer pluginy. Je užitočné mať SMTP class
* v rovnakom priečinku ako PHPMailer.
* @var string
*/
public $PluginDir = '';
/**
* Nastavuje mailovú schránku, kde má príjsť odpoveď o prečítaní správy
* @var string
*/
public $ConfirmReadingTo = '';
/**
* Nastavuje hostname pre použitie Message-Id a Received hlavičiek
* a prednastavý je reťazec HELO. Pokiaľ je prázdne, hodnota vráti
* SERVER_NAME ktorý je používaný alebo 'localhost.localdomain'.
* @var string
*/
public $Hostname = '';
/**
* Nastavuje ID správy používanú v Message-Id hlavičke.
* Pokiaľ ju nezadáte, tak bude automatický vygenerovaná unikátna.
* @var string
*/
public $MessageID = '';
/////////////////////////////////////////////////
// NASTAVENIA PRE SMTP
/////////////////////////////////////////////////
/**
* Nastavuje SMTP host-y. Všetky host-y musia byť oddelená
* bodkočiarkou. Môžte taktiež nastaviť aj odlišný port
* pre každý host, použitým tohto formátu: [hostname:port]
* (príkl.: "smtp1.example.com:25;smtp2.example.com").
* Host-y budú skúšané poporadí.
* @var string
*/
public $Host = 'localhost';
/**
* Nastavuje predvolený SMTP port.
* @var int
*/
public $Port = 25;
/**
* Nastavuje správu SMTP HELO (Predvolený je v $Hostname).
* @var string
*/
public $Helo = '';
/**
* Nastaví prefix pripojenia.
* Možnosti sú "", "ssl" alebo "tls"
* @var string
*/
public $SMTPSecure = '';
/**
* Nastavuje SMTP autentifikáciu.
* @var bool
*/
public $SMTPAuth = false;
/**
* Nastavuje SMTP username.
* @var string
*/
public $Username = '';
/**
* Nastavuje SMTP password.
* @var string
*/
public $Password = '';
/**
* Nastaví SMTP server timeout v sekundách.
* Nefunguje vo win32 verziách.
* @var int
*/
public $Timeout = 10;
/**
* Nastavuje spracovávanie SMTP triedy.
* @var bool
*/
public $SMTPDebug = false;
/**
* Chráni SMTP pripojenie pred uzavretím po odoslaní každého z mailov.
* Pokiaľ je nastavený na true zavrie spojenie požiadovkom na funkciu
* SmtpClose().
* @var bool
*/
public $SMTPKeepAlive = false;
/**
* Umožnňuje nastaviť či sa má posialť každému príjemcovi mail zvlášť.
* @var bool
*/
public $SingleTo = false;
/**
* Umožňuje zmenu oddelovača riadkov
* @var string
*/
public $LE = "\n";
------------
Záver:
Tak ja pevne dúfam, že Vám tento fakt dlhočízny manuál pomohol. Že teraz už viete základy používanie PHPMailera, že na mňa budete spomínať len v dobrom
----------------------------
Manuál vytvoril Tomáš Bončo (Tominator), výhradne pre PCForum. Je zákázané kopírovať ho, alebo jeho súčasti na iné stránky, bez môjho písomného povolenia či súhlasu. Copyright 2009. Všetky práva vyhradené.