Kaip siųsti el. laiškus naudojant PHPMailer
„PHPMailer“ – tai programinė biblioteka, skirta elektroninio pašto siuntimui per PHP valdyti. „PHPMailer“ dažniausiai naudojamas svetainių kontaktinėms formoms, tačiau juo taip pat galima siųsti asmeninius laiškus.
Kas yra PHPMailer?
„PHPMailer“ – tai PHP pašto išplėtimas, kurį kuria ir prižiūri PHP bendruomenė. Su PHPMailer išsiųsti laiškai rečiau patenka į šlamšto aplanką nei tie, kurie išsiunčiami 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 naudojamas laiškams perduoti internetu. Be to, PHPMailer, skirtingai nei įdiegta pašto funkcija, taip pat palaiko HTML laiškus ir priedus.
Kam naudojamas PHPMailer?
Palyginti su kitais el. pašto paslaugų teikėjais ar kompiuteryje įdiegtomis el. pašto programomis, „PHPMailer“ naudoti šiek tiek sudėtingiau, todėl galite stebėtis, kodėl žmonės nusprendžia jį rinktis. Šis PHP frameworkas supaprastina automatinių atsakymų, pavyzdžiui, tokių, kokių reikia internetinei parduotuvei, kūrimą. Be to, „PHPMailer“ taip pat tinka svetainių kontaktinėms formoms.
Kokie yra PHPMailer reikalavimai?
Norint naudoti „PHPMailer“, reikalingas SMTP serveris. Galite pasirinkti, ar naudoti paslaugų teikėjo pašto serverį, ar sukonfigūruoti savo. PHP plėtinį geriausia įdiegti naudojant „Composer“ (PHP paketų tvarkyklę).
PHP pagrindų įsisavinimas yra dar vienas svarbus reikalavimas norint naudotis „PHPMailer“. Jei turite sunkumų su PHP pagrindais, jums gali padėti mūsų PHP pamoka pradedantiesiems.
Kaip žingsnis po žingsnio įdiegti PHPMailer
1 žingsnis: Atsisiųskite naujausią „PHPMailer“ versiją
Atsisiųskite naujausią „PHPMailer“ versiją. Tai galite padaryti naudodami „Composer“ arba rankiniu būdu iš „GitHub“.
1 variantas: Atsisiųsti naudojant „Composer“
Jei įdiegėte paketų tvarkyklę „Composer“, galite tiesiog naudoti šią komandą:
composer require phpmailer/phpmailerbashSvarbu: 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";bashRaktinis ž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: Atsisiųskite tiesiogiai iš „GitHub“
PHPMailer šaltinio failus taip pat galima atsisiųsti rankiniu būdu – tam reikia paspausti mygtuką „Code“ atitinkamame „GitHub“ repozitoriume ir atsisiųsti ZIP failą. Jei jūsų sistemoje įdiegta Git, repozitoriumą taip pat galima klonuoti naudojant komandinės eilutės komandą.
2 žingsnis: Išpakuokite failus
Jei PHPMailer šaltinio kodą atsisiuntėte rankiniu būdu, turite išpakuoti ZIP failus. Pasirinkite vietą, kurioje norite įdiegti PHPMailer, ir įtraukite PHPMailer į savo skriptą. Darant prielaidą, kad PHPMailer failus išpakuojote į aplanką pavadinimu „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);phpKaip siųsti el. laiškus naudojant PHPMailer: žingsnis po žingsnio
1 žingsnis: Įtraukite vardų erdves
Patikrinkite, 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;phpPrie atskirų klasių galite prisijungti įrašydami jų pavadinimus po paskutinės kablelės.
2 žingsnis: Klaidų aptikimas
Nors „PHPMailer“ yra labai patikimas būdas siųsti el. laiškus, kartais gali pasitaikyti klaidų. Įtraukus „try-catch“ bloką į el. laiško siuntimo kodą, bus užkirstas kelias tam, kad jūsų pašto serveryje esantys konfidencialūs duomenys nebūtų nusiųsti vartotojams kaip klaidos pranešimas:
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();
}php3 žingsnis: Autentiškumo patvirtinimas naudojant SMTP
Norėdami naudoti „PHPMailer“, turite prisijungti per SMTP. Įveskite savo pašto serverio adresą šalia atitinkamo protokolo ( TLS/SSL arba SMTP) ir nurodykite prievadą, vartotojo vardą bei slaptažodį. Naudojamas protokolas ir prievadas priklauso nuo jūsų pašto paslaugų teikėjo. Atitinkamus serverio duomenis galite rasti pašto paslaugų teikėjo svetainė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;phpVietoj ENCRYPTION_STARTTLS kaip šifravimo metodo taip pat galite naudoti ENCRYPTION_SMTPS. Pasirinkus ENCRYPTION_SMTPS, ryšys užmezgamas tik tuomet, jei veikia TLS. Tai reiškia, kad ryšys su serveriu įmanomas tik tuo atveju, jei serveris palaiko saugiam duomenų perdavimui reikalingas šifravimo priemones. Pasirinkus „StartTLS“, ryšys su pašto serveriu užmezgamas be šifravimo. Šifravimas taikomas tik vėliau. Jei TLS šifravimo taikyti neįmanoma, likęs duomenų mainas vyks nešifruotas.
SMTPS užtikrina aukštesnį saugumo lygį, o StartTLSpasižymi geresniu suderinamumu. Dėl šio suderinamumo StartTLS paprastai yra labiau pageidaujamas pasirinkimas.
4 žingsnis: Nurodykite 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');php5 žingsnis: Įterpkite laiško turinį
Nepamirškite laiško turinio. Paprastai jį sudaro tema ir tekstas, kuriuos galima pateikti tiek HTML, tiek ne-HTML formatais. Svarbu atkreipti dėmesį, kad senesnė programinė įranga gali nepalaikyti dabartinio HTML5 standarto, todėl patartina laišką kurti naudojant HTML.
Naudodami „PHPMailer“ ir funkciją „addAttachment“, taip pat galite lengvai siųsti priedus. Naudodami „PHPMailer“ taip pat galite siųsti paveikslėlius, muzikos failus, dokumentus, vaizdo įrašus ir GIF failus. Be to, galite pervardyti priedus, nurodydami neprivalomą antrąjį parametrą, kuris perduodamas š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");php6 žingsnis: Naudokite tinkamą simbolių kodavimą
Rekomenduojama PHPMailer įjungti UTF-8, kad būtų išvengta rodymo klaidų apdorojant kitų kalbų raides su diakritiniais ženklais, ypač naudojant įvairius priedus. Tai galima padaryti įterpiant į savo PHP skriptą šias kodų eilutes:
$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';php7 žingsnis: Siųsti el. laišką
Dabar atėjo laikas išsiųsti laišką. Tam naudokite šią komandą:
$mail->send();phpGeriausia 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 pateikiamas visas kodas, kurio reikia, norint išsiųsti elektroninį laišką su paveikslėlio priedu pasirinktam 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