Mnoho vývojárov v jazyku PHP potrebuje posielať e-maily zo svojho kódu. Jediná PHP funkcia, ktorá toto podporuje, je mail(). Avšak táto funkcia neposkytuje žiadnu pomoc pri využívaní populárnych funkcií, ako je šifrovanie, overovanie, HTML správy a prílohy. Tiež správne formátovanie e-mailov je až prekvapujúco zložité. Existuje mnoho prekrývajúcich sa RFC, ktoré vyžadujú prísne dodržiavanie hrozných a komplikovaných pravidiel formátovania a kódovania - väčšina kódu, ktorý nájdete online a priamo používa funkciu mail(), je jednoducho nesprávna.
Najväčším problémom pri posielaní mailu cez funkciu mail() je nemožnosť SMTP autorizácie. V súčasnosti je už prakticky nevyhnutné, aby e-mailová správa bola odoslaná cez korektne nastavený e-mailový server, a aby bol jednoznačne identifikovaný a overený jej odosielateľ. V opačnom prípade takúto správu väčšina príjemcov odmietne prijať. Riešenie tohto problému prináša trieda PHPMailer.
Ak používate starú verziu PHP 5.2 - 5.6, kompatibilnú verziu triedy si môžete stiahnuť z tohto odkazu:
https://setup.sk/download/PHPMailer_PHP_5.3-master.zip
Ak používate novšiu verziu PHP 7.0 - 8.3, kompatibilnú verziu triedy si môžete stiahnuť z tohto odkazu:
https://setup.sk/download/PHPMailer-master.zip
Najdôležitejšie vlastnosti tejto triedy:
- Pravdepodobne najpopulárnejší kód na odosielanie e-mailov v jazyku PHP na svete!
- Používaný mnohými open-source projektmi: WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomla! a mnohými ďalšími
- Integrovaná podpora pre SMTP - posielajte bez lokálneho e-mailového servera
- Posielajte e-maily s viacerými adresátmi To, CC, BCC a Reply-to
- Multipart/alternative e-maily pre e-mailové klienty, ktoré nepodporujú HTML e-maily
- Pridávajte prílohy, vrátane inline
- Podpora pre obsah v UTF-8 a kódovania 8bit, base64, binárne a quoted-printable
- SMTP cez SSL a SMTP+STARTTLS transporty s autentifikáciou pomocou mechanizmov LOGIN, PLAIN, CRAM-MD5 a XOAUTH2
- Automatická validácia e-mailových adries
- Ochrana proti útokom na vkladanie hlavičiek
- Chybové správy vo viac ako 50 jazykoch!
- Podpora pre podpis DKIM a S/MIME
Skopírujte obsah zložky PHPMailer do jedného z adresárov uvedených v konfigurácii vášho PHP v include_path a manuálne načítajte každý súbor triedy:
<?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require 'path/to/PHPMailer/src/Exception.php'; require 'path/to/PHPMailer/src/PHPMailer.php'; require 'path/to/PHPMailer/src/SMTP.php';
Tu je jednoduchý príklad použitia:
<?php
// Naimportujte PHPMailer triedy do globálneho menného priestoru
// Toto musí byť na začiatku skriptu, nie vnútri funkcie
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'path/to/PHPMailer/src/Exception.php'; // Zmeňte cestu k skriptu podľa toho, kam ste ho nakopírovali
require 'path/to/PHPMailer/src/PHPMailer.php'; // Zmeňte cestu k skriptu podľa toho, kam ste ho nakopírovali
require 'path/to/PHPMailer/src/SMTP.php'; // Zmeňte cestu k skriptu podľa toho, kam ste ho nakopírovali
// Vytvorenie inštancie, `true` povoľuje výnimky
$mail = new PHPMailer(true);
try {
//Server settings
$mail->isSMTP(); // Pošli mail použitím SMTP
$mail->Host = 'mail.webhouse.sk'; // SMTP server spoločnosti WebHouse
$mail->SMTPAuth = true; // Použi SMTP autentifikáciu
$mail->Username = 'from@example.com'; // SMTP meno - vaša e-mailová adresa odosielateľa, slúžiaca zároveň na autentifikáciu
$mail->Password = 'secret'; // SMTP heslo - heslo do schránky vyššie
$mail->SMTPSecure = false; // `PHPMailer::ENCRYPTION_STARTTLS` pre TLS kryptovanie; `PHPMailer::ENCRYPTION_SMTPS` alternatívne pre port 465
$mail->SMTPAutoTLS = false; // Pri použití kryptovania zakomentovať
$mail->Port = 587; // TCP port, použite 465 pre `PHPMailer::ENCRYPTION_SMTPS` vyššie
//Recipients
$mail->setFrom('from@example.com', 'Janko Hraško'); // Vaša e-mailová adresa odosielateľa, voliteľne aj vaše meno
$mail->addAddress('joe@example.net', 'Joe User'); // Príjemcu mailu, voliteľne aj jeho meno
$mail->addAddress('ellen@example.com'); // Meno príjemcu nemusí byť zadané
$mail->addReplyTo('info@example.com', 'Information'); // Kam poslať odpoveď (voliteľné)
$mail->addCC('cc@example.com'); // Kam poslať kópiu mailu (voliteľné)
$mail->addBCC('bcc@example.com'); // Kam poslať skrytú kópiu mailu (voliteľné)
// Attachments
$mail->addAttachment('./subory/priloha.tar.gz'); // Pridá prílohu
$mail->addAttachment('./tmp/obrazok.jpg', 'novy.jpg'); // Názov súboru je voliteľný
// Content
$mail->isHTML(true); // Nastav formát emailu na HTML
$mail->Subject = 'Toto je predmet mailu';
$mail->Body = 'Toto je telo HTML časti mailu <b>tučným písmom!</b>';
$mail->AltBody = 'Toto je telo v obyčajnom texte pre mailové programy nepodporujúce HTML formátovanie';
$mail->send();
echo 'Správa bola odoslaná';
} catch (Exception $e) {
echo "Správa nemohla byť odoslaná. Chyba: {$mail->ErrorInfo}";
}
?>

