PHPMailer ir prog­ram­ma­tū­ras bib­lio­tē­ka, kas nodrošina e-pasta no­sū­tī­ša­nu, iz­man­to­jot PHP. PHPMailer gal­ve­no­kārt tiek izmantots tīmekļa vietņu kon­taktfor­mām, taču to var izmantot arī privātu e-pastu sūtīšanai.

Kas ir PHPMailer?

PHPMailer ir pasta pa­pla­ši­nā­jums PHP, ko izstrādā un uztur PHP kopiena. Ar PHPMailer nosūtītās e-pasta vēstules retāk nonāk spam mapē nekā tās, kas nosūtītas ar PHP iebūvēto pasta funkciju. Tas ir tāpēc, ka ar PHPMailer rakstītās vēstules tiek nosūtītas, iz­man­to­jot SMTP. SMTP ir sa­īsi­nā­jums no Simple Mail Transfer Protocol (vien­kār­šais pasta pārraides protokols) un to izmanto e-pasta vēstuļu pārraidei internetā. Turklāt, atšķirībā no iebūvētās pasta funkcijas, PHPMailer atbalsta arī HTML vēstules un pie­li­ku­mus.

Kādam nolūkam izmanto PHPMailer?

Sa­lī­dzi­nā­ju­mā ar citiem e-pasta pa­kal­po­ju­mu snie­dzē­jiem vai datorā in­sta­lē­tām e-pasta prog­ram­mām PHPMailer lietošana ir nedaudz ap­grū­ti­no­šā­ka, tāpēc varētu rasties jautājums, kāpēc cilvēki izvēlas to lietot. Šis PHP rīks atvieglo au­to­ma­ti­zē­tu atbilžu izveidi, piemēram, tās, kas ne­pie­cie­ša­mas interneta veikalam. Turklāt PHPMailer ir piemērots arī tīmekļa vietņu kon­taktfor­mām.

Kādas ir prasības attiecībā uz PHPMailer?

Lai izmantotu PHPMailer, jums ir ne­pie­cie­šams SMTP serveris. Jūs pats varat izlemt, vai izmantot pa­kal­po­ju­mu sniedzēja pastu serveri vai izveidot savu serveri. PHP pa­pla­ši­nā­ju­mu vislabāk instalēt, iz­man­to­jot Composer (PHP pakotņu pār­val­dnie­ku).

Tip

PHP pamatu apguve ir vēl viena svarīga prasība, lai varētu izmantot PHPMailer. Ja jums rodas grūtības ar PHP pamatiem, palīdzību var sniegt mūsu PHP apmācības materiāls ie­sā­cē­jiem.

Kā soli pa solim instalēt PHPMailer

1. solis: Le­ju­pie­lā­dē­jiet jaunāko PHPMailer versiju

Le­ju­pie­lā­dē­jiet jaunāko PHPMailer versiju. To var izdarīt, iz­man­to­jot Composer, vai manuāli no GitHub.

1. variants: Le­ju­pie­lā­de, iz­man­to­jot Composer

Ja esat in­sta­lē­jis pakotņu pār­val­dnie­ku Composer, varat vienkārši izmantot šo komandu:

composer require phpmailer/phpmailer
bash

Svarīgi: ja esat in­sta­lē­jis PHPMailer ar Composer, lai varētu sūtīt e-pastus, PHP kodā ir jāiekļauj Composer.

Var izmantot šādu koda rindu:

require_once "vendor/autoload.php";
bash

At­slēg­vārds**„require_once”**nodrošina, ka Composer tiek iekļauts tikai vienu reizi. Pretējā gadījumā var rasties prog­ram­mas kļūdas. In­sta­lē­ša­na, iz­man­to­jot Composer, tagad ir pabeigta.

2. variants: Le­ju­pie­lā­dēt tieši no GitHub

PHPMailer avota failus var le­ju­pie­lā­dēt arī manuāli, no­klik­šķi­not uz pogas „Code“ at­tie­cī­ga­jā GitHub re­po­zi­to­ri­jā un le­ju­pie­lā­dē­jot ZIP failu. Ja jūsu sistēmā ir instalēts Git, varat arī klonēt re­po­zi­to­ri­ju, iz­man­to­jot ko­man­drin­das komandu.

2. solis: Iz­pa­kuo­jiet failus

Ja esat manuāli le­ju­pie­lā­dē­jis PHPMailer avota kodu, jums ir jāatver ZIP faili. Iz­vē­lie­ties vietu, kurā vēlaties instalēt PHPMailer, un ie­kļau­jiet PHPMailer savā skriptā. Pieņemot, ka esat izpakojis PHPMailer failus mapē ar nosaukumu „PHPMailer“, varat izmantot šādas koda rindas:

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

Kā soli pa solim sūtīt e-pastus, iz­man­to­jot PHPMailer

1. solis: Ie­kļau­jiet vārdu telpas

Pār­lie­ci­nie­ties, ka vārdu telpas ir pareizi definētas, lai varētu izmantot PHPMailer. Tam ir ne­pie­cie­ša­mi Use rīkojumi, tāpēc jūsu kodā jāiekļauj šādas rindas:

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

Lai piekļūtu at­se­viš­ķām klasēm, pēc pēdējās slīpsvīt­ras jānorāda to nosaukumi.

2. solis: Kļūdu no­teik­ša­na

Lai gan PHPMailer ir ļoti uzticams veids, kā sūtīt e-pastus, laiku pa laikam var rasties kļūdas. Iekļaujot e-pasta no­sū­tī­ša­nas procesā „try-catch“ kons­truk­ci­ju, varēsiet novērst to, ka jūsu pasta serverī esošie kon­fi­den­ciā­lie dati tiek nosūtīti lie­to­tā­jiem kā kļūdas ziņojums:

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. solis: Au­ten­ti­fi­cē­ša­nās, iz­man­to­jot SMTP

Lai izmantotu PHPMailer, jums ir jā­au­ten­ti­fi­cē­jas, iz­man­to­jot SMTP. Ievadiet sava pasta servera adresi blakus at­bil­sto­ša­jam pro­to­ko­lam ( TLS/SSL vai SMTP) un norādiet portu, lie­to­tājvār­du un paroli. Iz­man­to­ja­mais protokols un ports ir atkarīgi no jūsu pasta pa­kal­po­ju­ma sniedzēja. At­tie­cī­gos servera datus var atrast pasta pa­kal­po­ju­ma sniedzēja tīmekļa vietnē.

$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

Vietā ENCRYPTION_STARTTLS kā šif­rē­ša­nas metodi var izmantot arī ENCRYPTION_SMTPS. Iz­vē­lo­ties ENCRYPTION_SMTPS, sa­vie­no­jums tiek izveidots tikai tad, ja ir aktīvs TLS. Tas nozīmē, ka saziņa ar serveri ir iespējama tikai tad, ja serveris atbalsta drošai datu pārraidei ne­pie­cie­ša­mos šif­rē­ša­nas pasākumus. Iz­vē­lo­ties StartTLS, sa­vie­no­jums ar pasta serveri tiek izveidots bez šif­rē­ša­nas. Šifrēšana tiek piemērota tikai pēc tam. Ja nav iespējams piemērot TLS šifrēšanu, atlikusī datu apmaiņa notiks nešifrētā veidā.

SMTPS nodrošina augstāku drošības līmeni, savukārt StartTLSpiedāvā labāku saderību. Tieši saderības dēļ StartTLS parasti tiek izvēlēts kā priekš­ro­ka.

4. solis: Norādiet e-pasta saņēmēju

Tagad skriptā varat norādīt e-pasta saņēmē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. solis: Ievadi e-pasta saturu

Ne­aiz­mir­stiet par e-pasta saturu. Tas parasti sastāv no temata un teksta, ko var norādīt gan HTML, gan ne-HTML formātā. Ir svarīgi ņemt vērā, ka vecākas prog­ram­mas varētu nespēt atbalstīt pa­šrei­zē­jo HTML5 standartu, tāpēc varētu būt liet­de­rī­gi izveidot e-pastu, iz­man­to­jot HTML.

Ar PHPMailer varat viegli nosūtīt arī pie­li­ku­mus, iz­man­to­jot funkciju ad­dAt­tachment. Ar PHPMailer var nosūtīt arī attēlus, mūziku, do­ku­men­tus, vi­deok­li­pus un GIF failus. Pie­li­ku­mus varat arī pārdēvēt, iz­man­to­jot papildu otro parametru, kas tiek nodots 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. solis: Iz­man­to­jiet pareizo rakstzīm­ju kodējumu

Ieteicams PHPMailer iestatīt UTF-8, lai novērstu at­tē­lo­ša­nas kļūdas, ap­strā­dā­jot citās valodās lietotos burtus ar diak­ri­tis­ka­jām zīmēm, it īpaši, ja tiek izmantoti dažādi pielikumi. To var izdarīt, pie­vie­no­jot savam PHP skriptam šādas koda rindas:

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

7. solis: Nosūtiet e-pastu

Tagad ir pienācis laiks nosūtīt e-pastu. Lai to izdarītu, iz­man­to­jiet šādu komandu:

$mail->send();
php

Vislabāk ir ievietot visu kodu, kas norādīts pie­pra­sī­ju­ma no­sū­tī­ša­nas daļā, skripta „try“ bloka ietvaros, lai varētu uztvert jebkuras kļūdas.

Koda piemērs e-pasta no­sū­tī­ša­nai ar PHPMailer

Zemāk ir redzams viss ne­pie­cie­ša­mais kods, lai, iz­man­to­jot PHPMailer, nosūtītu e-pastu ar attēla pielikumu iz­vē­lē­ta­jam saņēmējam:

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