PHPMailer je programová knižnica, ktorá reguluje prenos e-mailov prostredníctvom PHP. PHPMailer sa používa hlavne pre kontaktné formuláre na webových stránkach, ale dá sa použiť aj na odosielanie súkromných e-mailov.

Čo je PHPMailer?

PHPMailer je poštové rozšírenie pre PHP, ktoré vyvíja a udržiava komunita PHP. E-maily odoslané pomocou PHPMailer majú menšiu pravdepodobnosť, že skončia v priečinku so spamom, ako e-maily odoslané pomocou vstavanej poštovej funkcie PHP. Je to preto, že e-maily napísané pomocou PHPMailer sa odosielajú pomocou SMTP. SMTP je skratka pre Simple Mail Transfer Protocol (jednoduchý protokol na prenos pošty) a používa sa na prenos e-mailov cez internet. Okrem toho PHPMailer na rozdiel od vstavanej poštovej funkcie podporuje aj HTML e-maily a prílohy.

Na čo sa používa PHPMailer?

PHPMailer je v porovnaní s inými poskytovateľmi e-mailových služieb alebo integrovanými e-mailovými programami v počítači o niečo zložitejší na používanie, čo vás môže viesť k otázke, prečo sa ľudia rozhodli práve pre tento program. Framework PHP zjednodušuje vytváranie automatických odpovedí, ako sú napríklad odpovede potrebné pre internetový obchod. Okrem toho je PHPMailer vhodný aj pre kontaktné formuláre na webových stránkach.

Aké sú požiadavky na PHPMailer?

Na používanie PHPMailer potrebujete SMTP server. Je len na vás, či použijete mailový server od poskytovateľa alebo si nastavíte vlastný server. Na inštaláciu rozšírenia PHP je najlepšie použiť Composer (správca balíkov pre PHP).

Tip

Ovládanie základov PHP je ďalšou dôležitou požiadavkou pre používanie PHPMailer. Náš tutoriál PHP pre začiatočníkov vám pomôže, ak máte problémy so základmi PHP.

Ako nainštalovať PHPMailer krok za krokom

Krok 1: Stiahnite si aktuálnu verziu PHPMailer

Stiahnite si najnovšiu verziu PHPMailer. Môžete to urobiť pomocou Composer alebo ručne z GitHub.

Možnosť 1: Stiahnutie pomocou programu Composer

Ak máte nainštalovaný správca balíkov Composer, môžete jednoducho použiť tento príkaz:

composer require phpmailer/phpmailer
bash

Dôležité: ak ste nainštalovali PHPMailer pomocou Composer, musíte do svojho PHP kódu zahrnúť Composer, aby ste mohli odosielať e-maily.

Môžete použiť nasledujúci riadok kódu:

require_once "vendor/autoload.php";
bash

Kľúčové slovo**„require_once“**zabezpečuje, že Composer je zahrnutý len raz. V opačnom prípade môžu nastať chyby programu. Inštalácia pomocou Composer je teraz dokončená.

Možnosť 2: Stiahnite si priamo z GitHubu

Zdrojové súbory PHPMailer je možné stiahnuť aj ručne kliknutím na tlačidlo Code v príslušnom repozitári GitHub a stiahnutím súboru ZIP. Ak máte v systéme nainštalovaný Git, môžete repozitár alternatívne klonovať pomocou príkazu v príkazovom riadku.

Krok 2: Rozbaľte súbory

Ak ste zdrojový kód PHPMailer stiahli ručne, musíte otvoriť súbory ZIP. Vyberte umiestnenie, kam chcete nainštalovať PHPMailer, a zahrňte PHPMailer do svojho skriptu. Predpokladajme, že ste súbory PHPMailer rozbalili do priečinka s názvom PHPMailer. V takom prípade môžete použiť nasledujúce riadky kódu:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
/*Class for handling exceptions and errors*/
require 'C:/PHPMailer/src/Exception.php';
/*PHPMailer class*/
require 'C:/PHPMailer/src/PHPMailer.php';
/*SMTP class needed to connect to an SMTP server*/.
require 'C:/PHPMailer/src/SMTP.php';
/*When creating a PHPMailer object, pass the parameter ‘true’ to activate exceptions (messages in the event of an error)*/
$email = new PHPMailer(true);
php

Ako posielať e-maily pomocou PHPMailer krok za krokom

Krok 1: Zaradiť menné priestory

Uistite sa, že menné priestory sú správne, aby ste mali prístup k PHPMailer. Na to je potrebných Use príkazov, takže váš kód by mal obsahovať nasledujúce riadky:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
php

K jednotlivým triedam sa dostanete tak, že za poslednú lomítko pridáte ich názvy.

Krok 2: Zachytenie chýb

Hoci PHPMailer je veľmi spoľahlivý spôsob odosielania e-mailov, občas sa môžu vyskytnúť chyby. Zaradenie príkazu try catch do odosielania e-mailov zabráni tomu, aby sa citlivé údaje na vašom poštovom serveri odosielali používateľom ako chybová správa:

try {
    // Try to create a new instance of PHPMailer class, where exceptions are enabled
    $mail = new PHPMailer (true);
// (...)
} catch (Exception $e) {
        echo "Mailer Error: ".$e->getMessage();
}
php

Krok 3: Overenie pomocou SMTP

Na používanie PHPMailer sa musíte overiť pomocou SMTP. Zadajte adresu svojho poštového servera vedľa príslušného protokolu ( TLS/SSL alebo SMTP) a uveďte port spolu s vaším používateľským menom a heslom. Protokol a port, ktoré používate, závisia od vášho poskytovateľa poštových služieb. Príslušné údaje o serveri nájdete na webovej stránke poskytovateľa poštových služieb.

$mail->isSMTP();
$mail->SMTPAuth = true;
// Personal data
$mail->host = "smtp.domain.com";
$mail->Port = 587;
$mail->username = "name.surname@domain.com";
$mail->password = "testpassword4321";
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
php

Namiesto ENCRYPTION_STARTTLS môžete ako metódu šifrovania použiť aj ENCRYPTION_SMTPS. Pri ENCRYPTION_SMTPS sa pripojenie nadviaže len vtedy, ak je aktívny TLS TLS. To znamená, že komunikácia so serverom je možná len vtedy, ak server podporuje šifrovacie opatrenia potrebné na bezpečný prenos. Pri StartTLS sa pripojenie k poštovému serveru nadviaže bez šifrovania. Až potom sa uplatní šifrovanie. Ak nie je možné uplatniť šifrovanie TLS, zostávajúca výmena údajov prebehne bez šifrovania.

SMTPS ponúka vyššiu úroveň bezpečnosti, zatiaľ čo StartTLSmá lepšiu kompatibilitu. Vďaka svojej kompatibilite je StartTLS vo všeobecnosti preferovanou voľbou.

Krok 4: Uveďte príjemcu e-mailu

Teraz môžete v skripte určiť príjemcov vašej e-mailovej správy.

// Sender
$mail->setFrom('info@example.com', 'name');
// Recipient, the name can also be stated
$mail->addAddress('info@example.com', 'name');
// Copy
$mail->addCC('info@example.com');
// Blind copy
$mail->addBCC('info@example.com', 'name');
php

Krok 5: Pridajte obsah e-mailu

Nezabudnite na obsah svojho e-mailu. Ten sa zvyčajne skladá z predmetu a textu, ktorý môže byť špecifikovaný ako HTML aj ako ne-HTML verzia. Je dôležité poznamenať, že starší softvér nemusí byť schopný spracovať aktuálny štandard HTML5, takže môže byť dobré vytvoriť e-mail pomocou HTML.

Pomocou funkcie addAttachment môžete s PHPMailerom ľahko posielať aj prílohy. S PHPMailerom je možné posielať aj obrázky, hudbu, dokumenty, videá a GIF súbory. Prílohy môžete premenovať pomocou voliteľného druhého parametra, ktorý sa prenáša do funkcie.

$mail->isHTML(true);
// Subject
$mail->Subject = 'The subject of your mail';
// HTML content
$mail->Body = 'The mail text as HTML content. <b>bold</b> elements are allowed.';
$mail->AltBody = 'The text as a simple text element';
// Add attachment
$mail-> addAttachment("/home/user/Desktop/sampleimage.png", "sampleimage.png");
php

Krok 6: Použite správne kódovanie znakov

Je dobré povoliť UTF-8 v PHPMailer, aby sa predišlo chybám zobrazenia pri spracovaní znakov s diakritikou z iných jazykov, najmä pri používaní rôznych príloh. Môžete to urobiť pridaním nasledujúcich riadkov kódu do svojho skriptu PHP:

$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';
php

Krok 7: Odoslať e-mail

Teraz je čas odoslať e-mail. Na to použite nasledujúci príkaz:

$mail->send();
php

Najlepšie je umiestniť celý kód zobrazený v požiadavke na odoslanie do bloku príkazu try vášho skriptu, aby ste mohli zachytiť všetky chyby.

Príklad kódu na odoslanie e-mailu pomocou PHPMailer

Nižšie je uvedený celý kód, ktorý potrebujete na odoslanie e-mailu s prílohou obrázku adresátovi podľa vášho výberu pomocou PHPMailer:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require_once "vendor/autoload.php";
// Enable or disable exceptions via variable
$debug = true;
try {
    // Create instance of PHPMailer class
    $mail = new PHPMailer($debug);
     if ($debug) {
         // issue a detailed log
        $mail->SMTPDebug = SMTP::DEBUG_SERVER; 
    }
    // Authentication with SMTP
    $mail-> isSMTP();
    $mail->SMTPAuth = true;
    // Login
    $mail->Host = "smtp.domain.com";
    $mail->Port = 587;
    $mail->Username = "name.surname@domain.com";
    $mail->Password = "testpassword4321";
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->setFrom('info@example.com', 'name');
    $mail->addAddress('info@example.com', 'name');
    $mail-> addAttachment("/home/user/Desktop/sampleimage.png", "sampleimage.png");
    $mail->CharSet = 'UTF-8';
    $mail->Encoding = 'base64';
    $mail->isHTML(true);
    $mail->Subject = 'The subject of your mail';
    $mail->Body = 'The mail text in HTML content. <b>bold</b> elements are allowed.';
    $mail->AltBody = 'The text as a simple text element';
    $mail->send();
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: ".$e->getMessage();
}
php
Prejsť na hlavné menu