„PHPMailer“ – tai prog­ra­mi­nė bi­b­lio­te­ka, skirta elekt­ro­ni­nio pašto siuntimui per PHP valdyti. „PHPMailer“ daž­niau­siai nau­do­ja­mas svetainių kon­tak­ti­nėms formoms, tačiau juo taip pat galima siųsti as­me­ni­nius laiškus.

Kas yra PHPMailer?

„PHPMailer“ – tai PHP pašto iš­plė­ti­mas, kurį kuria ir prižiūri PHP bend­ruo­me­nė. Su PHPMailer išsiųsti laiškai rečiau patenka į šlamšto aplanką nei tie, kurie iš­siun­čia­mi naudojant į PHP įdiegtą pašto funkciją. Taip yra todėl, kad su PHPMailer parašyti laiškai siunčiami naudojant SMTP. SMTP reiškia „Simple Mail Transfer Protocol“ (paprastą pašto perdavimo protokolą) ir yra nau­do­ja­mas laiškams perduoti internetu. Be to, PHPMailer, skir­tin­gai nei įdiegta pašto funkcija, taip pat palaiko HTML laiškus ir priedus.

Kam nau­do­ja­mas PHPMailer?

Palyginti su kitais el. pašto paslaugų teikėjais ar kom­piu­te­ry­je įdieg­to­mis el. pašto prog­ra­mo­mis, „PHPMailer“ naudoti šiek tiek su­dė­tin­giau, todėl galite stebėtis, kodėl žmonės nu­spren­džia jį rinktis. Šis PHP fra­me­wor­kas su­pa­pras­ti­na au­to­ma­ti­nių atsakymų, pa­vyz­džiui, tokių, kokių reikia in­ter­ne­ti­nei par­duo­tu­vei, kūrimą. Be to, „PHPMailer“ taip pat tinka svetainių kon­tak­ti­nėms formoms.

Kokie yra PHPMailer rei­ka­la­vi­mai?

Norint naudoti „PHPMailer“, rei­ka­lin­gas SMTP serveris. Galite pa­si­rink­ti, ar naudoti paslaugų teikėjo pašto serverį, ar su­kon­fi­gū­ruo­ti savo. PHP plėtinį geriausia įdiegti naudojant „Composer“ (PHP paketų tvarkyklę).

Tip

PHP pagrindų įsi­sa­vi­ni­mas yra dar vienas svarbus rei­ka­la­vi­mas norint naudotis „PHPMailer“. Jei turite sunkumų su PHP pag­rin­dais, jums gali padėti mūsų PHP pamoka pra­de­dan­tie­siems.

Kaip žingsnis po žingsnio įdiegti PHPMailer

1 žingsnis: At­si­sių­s­ki­te naujausią „PHPMailer“ versiją

At­si­sių­s­ki­te naujausią „PHPMailer“ versiją. Tai galite padaryti naudodami „Composer“ arba rankiniu būdu iš „GitHub“.

1 variantas: At­si­siųs­ti naudojant „Composer“

Jei įdiegėte paketų tvarkyklę „Composer“, galite tiesiog naudoti šią komandą:

composer require phpmailer/phpmailer
bash

Svarbu: jei PHPMailer įdiegėte naudodami „Composer“, norėdami siųsti laiškus, savo PHP kode turite įtraukti „Composer“.

Galima naudoti šią kodų eilutę:

require_once "vendor/autoload.php";
bash

Raktinis žodis**„require_once“**užtikrina, kad „Composer“ bus įtrauktas tik vieną kartą. Priešingu atveju gali kilti programos klaidų. Įdiegimas naudojant „Composer“ dabar baigtas.

2 variantas: At­si­sių­s­ki­te tie­sio­giai iš „GitHub“

PHPMailer šaltinio failus taip pat galima at­si­siųs­ti rankiniu būdu – tam reikia paspausti mygtuką „Code“ ati­tin­ka­ma­me „GitHub“ rep­o­zi­to­riu­me ir at­si­siųs­ti ZIP failą. Jei jūsų sistemoje įdiegta Git, rep­o­zi­to­riu­mą taip pat galima klonuoti naudojant ko­man­di­nės eilutės komandą.

2 žingsnis: Iš­pa­kuo­ki­te failus

Jei PHPMailer šaltinio kodą at­si­siun­tė­te rankiniu būdu, turite išpakuoti ZIP failus. Pa­si­rin­ki­te vietą, kurioje norite įdiegti PHPMailer, ir įtraukite PHPMailer į savo skriptą. Darant prielaidą, kad PHPMailer failus iš­pa­kuo­jo­te į aplanką pa­va­di­ni­mu „PHPMailer“, galite naudoti šias kodo eilutes:

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

Kaip siųsti el. laiškus naudojant PHPMailer: žingsnis po žingsnio

1 žingsnis: Įtraukite vardų erdves

Pa­tik­rin­ki­te, ar vardų erdvės nurodytos teisingai, kad būtų galima naudotis „PHPMailer“. Tam reikia Use eilučių, todėl jūsų kodas turėtų būti toks:

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

Prie atskirų klasių galite pri­si­jung­ti įrašydami jų pa­va­di­ni­mus po pas­ku­ti­nės kablelės.

2 žingsnis: Klaidų aptikimas

Nors „PHPMailer“ yra labai patikimas būdas siųsti el. laiškus, kartais gali pa­si­tai­ky­ti klaidų. Įtraukus „try-catch“ bloką į el. laiško siuntimo kodą, bus užkirstas kelias tam, kad jūsų pašto serveryje esantys kon­fi­den­cia­lūs duomenys nebūtų nusiųsti var­to­to­jams kaip klaidos pra­ne­ši­mas:

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 žingsnis: Au­ten­tiš­ku­mo pa­tvir­ti­ni­mas naudojant SMTP

Norėdami naudoti „PHPMailer“, turite pri­si­jung­ti per SMTP. Įveskite savo pašto serverio adresą šalia ati­tin­ka­mo protokolo ( TLS/SSL arba SMTP) ir nu­ro­dy­ki­te prievadą, vartotojo vardą bei slap­ta­žo­dį. Nau­do­ja­mas pro­to­ko­las ir prievadas priklauso nuo jūsų pašto paslaugų teikėjo. Ati­tin­ka­mus serverio duomenis galite rasti pašto paslaugų teikėjo sve­tai­nė­je.

$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

Vietoj ENCRYPTION_STARTTLS kaip šifravimo metodo taip pat galite naudoti ENCRYPTION_SMTPS. Pa­si­rin­kus ENCRYPTION_SMTPS, ryšys už­mez­ga­mas tik tuomet, jei veikia TLS. Tai reiškia, kad ryšys su serveriu įmanomas tik tuo atveju, jei serveris palaiko saugiam duomenų per­da­vi­mui rei­ka­lin­gas šifravimo priemones. Pa­si­rin­kus „StartTLS“, ryšys su pašto serveriu už­mez­ga­mas be šifravimo. Šif­ra­vi­mas taikomas tik vėliau. Jei TLS šifravimo taikyti neįmanoma, likęs duomenų mainas vyks ne­šif­ruo­tas.

SMTPS užtikrina aukštesnį saugumo lygį, o StartTLSpasižymi geresniu su­de­ri­na­mu­mu. Dėl šio su­de­ri­na­mu­mo StartTLS paprastai yra labiau pa­gei­dau­ja­mas pa­si­rin­ki­mas.

4 žingsnis: Nu­ro­dy­ki­te el. laiško gavėją

Dabar skripte galite nurodyti savo el. laiško gavėjus.

// 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 žingsnis: Įterpkite laiško turinį

Ne­pa­mirš­ki­te laiško turinio. Paprastai jį sudaro tema ir tekstas, kuriuos galima pateikti tiek HTML, tiek ne-HTML formatais. Svarbu atkreipti dėmesį, kad senesnė prog­ra­mi­nė įranga gali ne­pa­lai­ky­ti da­bar­ti­nio HTML5 standarto, todėl patartina laišką kurti naudojant HTML.

Naudodami „PHPMailer“ ir funkciją „ad­dAt­tachment“, taip pat galite lengvai siųsti priedus. Naudodami „PHPMailer“ taip pat galite siųsti pa­veiks­lė­lius, muzikos failus, do­ku­men­tus, vaizdo įrašus ir GIF failus. Be to, galite per­var­dy­ti priedus, nu­ro­dy­da­mi ne­pri­va­lo­mą antrąjį parametrą, kuris per­duo­da­mas šiai funkcijai.

$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 žingsnis: Naudokite tinkamą simbolių kodavimą

Re­ko­men­duo­ja­ma PHPMailer įjungti UTF-8, kad būtų išvengta rodymo klaidų ap­do­ro­jant kitų kalbų raides su dia­kri­ti­niais ženklais, ypač naudojant įvairius priedus. Tai galima padaryti įterpiant į savo PHP skriptą šias kodų eilutes:

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

7 žingsnis: Siųsti el. laišką

Dabar atėjo laikas išsiųsti laišką. Tam naudokite šią komandą:

$mail->send();
php

Geriausia visą kodo fragmentą, pateiktą užklausos siuntimo dalyje, įdėti į skripto „try“ bloką, kad būtų galima aptikti visas klaidas.

PHPMailer naudojimo pavyzdys: el. laiško siuntimas

Toliau pa­tei­kia­mas visas kodas, kurio reikia, norint išsiųsti elekt­ro­ni­nį laišką su pa­veiks­lė­lio priedu pa­si­rink­tam gavėjui naudojant „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
Go to Main Menu