PHPMailer on prog­ram­mi­raa­ma­tu­kogu, mis haldab e-kirjade saatmist PHP kaudu. PHPMai­le­rit ka­su­ta­takse peamiselt vee­bi­sai­tide kon­tak­ti­vormide jaoks, kuid seda saab kasutada ka isiklike e-kirjade saat­miseks.

Mis on PHPMailer?

PHPMailer on PHP-le mõeldud mei­li­laienen­dus, mida arendab ja haldab PHP-kogukond. PHPMai­leriga saadetud e-kirjad satuvad harvemini rämps­posti kausta kui need, mis on saadetud PHP sis­se­ehi­ta­tud pos­ti­funkt­sioo­niga. Seda seetõttu, et PHPMai­leriga kir­ju­ta­tud e-kirjad saa­de­takse SMTP-pro­to­kolli abil. SMTP tähendab Simple Mail Transfer Protocol (lihtne pos­ti­edas­tus­pro­to­koll) ja seda ka­su­ta­takse e-kirjade edas­ta­miseks in­ter­ne­tis. Lisaks toetab PHPMailer ka HTML-kirju ja manuseid, erinevalt sis­se­ehi­ta­tud pos­ti­funkt­sioo­nist.

Milleks ka­su­ta­takse PHPMai­le­rit?

PHPMai­leri ka­su­ta­mine on veidi tülikam võrreldes teiste e-posti tee­nu­se­pak­ku­jate või arvutisse in­teg­ree­ri­tud e-posti prog­rammi­dega, mistõttu võid imestada, miks inimesed seda ikkagi kasutavad. See PHP-raamistik liht­sus­tab au­to­maat­vas­tuste loomist, mida on vaja näiteks veebipoes. Lisaks sobib PHPMailer hästi ka vee­bi­sai­tide kon­tak­ti­vormide jaoks.

Millised on PHPMai­leri nõuded?

PHPMai­leri ka­su­ta­miseks on vaja SMTP-serverit. Saad ise otsustada, kas kasutad tee­nu­se­pak­kuja pos­ti­ser­ve­rit või seadistad oma serveri. PHP-laienduse ins­tal­li­miseks on kõige parem kasutada Com­po­se­rit (PHP-pakettide haldurit).

Tip

PHP põ­hi­aluste oman­da­mine on veel üks oluline eeldus PHPMai­leri ka­su­ta­miseks. Meie PHP-õpetus al­ga­ja­tele võib sulle abiks olla, kui sul on raskusi PHP põ­hi­alus­tega.

Kuidas ins­tal­lida PHPMailer samm-sammult

1. samm: Lae alla PHPMai­leri uusim versioon

Lae alla PHPMai­leri uusim versioon. Seda saab teha Com­po­seriga või käsitsi GitHubist.

1. võimalus: Lae alla Com­po­seriga

Kui olete pai­gal­da­nud pa­ke­ti­hal­duri Composer, võite lihtsalt kasutada järgmist käsku:

composer require phpmailer/phpmailer
bash

Tähtis: kui oled PHPMai­leri pai­gal­da­nud Com­po­seriga, pead e-kirjade saat­miseks lisama oma PHP-koodi Composer.

Võib kasutada järgmist koodirida:

require_once "vendor/autoload.php";
bash

Märksõna**„require_once”**tagab, et Composer lisatakse vaid üks kord. Vastasel juhul võivad tekkida prog­ram­mi­vead. Com­po­seriga pai­gal­da­mine on nüüd lõpetatud.

2. võimalus: Lae alla otse GitHubist

PHPMai­leri läh­te­koodi faile saab alla laadida ka käsitsi, klõpsates vastavas GitHubi hoidlas nupule „Code“ ja laadides alla ZIP-faili. Kui teie süsteemis on Git ins­tal­li­tud, võite hoidla ka käsurealt käsu abil kloonida.

2. samm: Lae failid lahti

Kui olete PHPMai­leri läh­te­koodi käsitsi alla laadinud, peate ZIP-failid lahti pakkima. Valige koht, kuhu soovite PHPMai­leri ins­tal­lida, ja lisage PHPMailer oma skripti. Eeldades, et olete PHPMai­leri failid lahti pakkinud kausta nimega „PHPMailer”, võite kasutada järgmisi koodiridu:

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

Kuidas saata e-kirju PHPMai­leri abil samm-sammult

1. samm: Lisage nimeruumi

Veendu, et nimeruumi seaded on õiged, et saaksid PHPMai­le­rile juurde pääseda. Selleks on vaja Use käsku, seega peaks su kood sisaldama järgmisi ridu:

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

Ük­si­ku­tele klas­si­dele pääseb ligi, lisades nende nimed viimase kaldjoone järele.

2. samm: vigade tu­vas­ta­mine

Kuigi PHPMailer on väga usal­dus­väärne viis e-kirjade saat­miseks, võivad aeg-ajalt siiski tekkida vead. Try-catch-lause lisamine e-kirja saatmise protsessi aitab vältida seda, et teie pos­ti­ser­ve­ris olevad tundlikud andmed saadetaks ka­su­ta­ja­tele vea­tea­tena:

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

3. samm: Au­ten­ti­mine SMTP kaudu

PHPMai­leri ka­su­ta­miseks peate end SMTP-pro­to­kolli kaudu autentima. Sisestage oma mei­li­ser­veri aadress vastava pro­to­kolli ( TLS/SSL või SMTP) kõrvale ning märkige lisaks ka­su­ta­ja­nimi, parool ja port. Kasutatav protokoll ja port sõltuvad teie mei­li­tee­nuse pakkujast. Vajalikud serveri andmed leiate mei­li­tee­nuse pakkuja vee­bi­sai­dilt.

$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

ENCRYPTION_STARTTLS asemel võid krüp­tee­ri­mis­mee­to­dina kasutada ka ENCRYPTION_SMTPS. ENCRYPTION_SMTPS puhul luuakse ühendus ainult siis, kui TLS on aktiivne. See tähendab, et suhtlus serveriga on võimalik ainult juhul, kui server toetab tur­va­li­seks and­meedas­tuseks vajalikke krüp­tee­ri­mis­meet­meid. Valiku StartTLS korral luuakse ühendus pos­ti­ser­veriga ilma krüp­tee­ri­miseta. Krüp­tee­ri­mine ra­ken­da­takse alles hiljem. Kui TLS-krüp­tee­ri­mist ei ole võimalik rakendada, toimub ülejäänud and­me­va­he­tus krüp­tee­ri­mata.

SMTPS pakub suuremat tur­va­li­sust, samas kui StartTLSon ühilduvam. Ühil­du­vuse tõttu on StartTLS üldjuhul eelis­ta­tud valik.

4. samm: Märkige e-kirja saaja

Nüüd saate skriptis määrata oma e-kirja ad­res­saa­did.

// 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

5. samm: Lisa kirja sisu

Ära unusta oma e-kirja sisu. See koosneb ta­va­li­selt teemast ja tekstist, mida saab määrata nii HTML- kui ka mitte-HTML-ver­sioo­nina. Oluline on meeles pidada, et vanem tarkvara ei pruugi toetada praegust HTML5-stan­dar­dit, seega võib olla mõistlik koostada oma e-kiri HTML-vormingus.

PHPMai­leri abil saate manuseid hõlpsasti saata funkt­siooni ad­dAt­tach­ment abil. PHPMai­leriga saab saata ka pilte, muusikat, dokumente, videoid ja GIF-faile. Lisaks saate manuseid ümber nimetada, kasutades selleks funkt­sioo­nile edas­ta­ta­vat va­li­ku­list teist pa­ra­meet­rit.

$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

6. samm: Kasuta õiget tä­he­mär­kide ko­dee­rin­gut

Soo­vi­ta­tav on lubada PHPMai­le­ris UTF-8, et vältida ku­va­mis­vigu teiste keelte tä­pi­täh­tede tööt­le­misel, eriti kui ka­su­ta­takse erinevaid manuseid. Selleks lisage oma PHP-skripti järgmised koo­di­ri­dad:

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

7. samm: Saada e-kiri

Nüüd on aeg oma e-kiri ära saata. Kasuta selleks järgmist käsku:

$mail->send();
php

Kõik saa­te­pä­rin­gus näidatud kood on kõige parem paigutada skripti try-lause plokki, et saaksite vead kinni püüda.

Koo­di­näide e-kirja saat­miseks PHPMai­leri abil

Allpool on toodud kogu kood, mida vajad, et saata PHPMai­leri abil valitud ad­res­saa­dile e-kiri, millele on lisatud pilt:

<?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
Go to Main Menu