Kuidas saata e-kirju PHPMaileri abil
PHPMailer on programmiraamatukogu, mis haldab e-kirjade saatmist PHP kaudu. PHPMailerit kasutatakse peamiselt veebisaitide kontaktivormide jaoks, kuid seda saab kasutada ka isiklike e-kirjade saatmiseks.
Mis on PHPMailer?
PHPMailer on PHP-le mõeldud meililaienendus, mida arendab ja haldab PHP-kogukond. PHPMaileriga saadetud e-kirjad satuvad harvemini rämpsposti kausta kui need, mis on saadetud PHP sisseehitatud postifunktsiooniga. Seda seetõttu, et PHPMaileriga kirjutatud e-kirjad saadetakse SMTP-protokolli abil. SMTP tähendab Simple Mail Transfer Protocol (lihtne postiedastusprotokoll) ja seda kasutatakse e-kirjade edastamiseks internetis. Lisaks toetab PHPMailer ka HTML-kirju ja manuseid, erinevalt sisseehitatud postifunktsioonist.
Milleks kasutatakse PHPMailerit?
PHPMaileri kasutamine on veidi tülikam võrreldes teiste e-posti teenusepakkujate või arvutisse integreeritud e-posti programmidega, mistõttu võid imestada, miks inimesed seda ikkagi kasutavad. See PHP-raamistik lihtsustab automaatvastuste loomist, mida on vaja näiteks veebipoes. Lisaks sobib PHPMailer hästi ka veebisaitide kontaktivormide jaoks.
Millised on PHPMaileri nõuded?
PHPMaileri kasutamiseks on vaja SMTP-serverit. Saad ise otsustada, kas kasutad teenusepakkuja postiserverit või seadistad oma serveri. PHP-laienduse installimiseks on kõige parem kasutada Composerit (PHP-pakettide haldurit).
PHP põhialuste omandamine on veel üks oluline eeldus PHPMaileri kasutamiseks. Meie PHP-õpetus algajatele võib sulle abiks olla, kui sul on raskusi PHP põhialustega.
Kuidas installida PHPMailer samm-sammult
1. samm: Lae alla PHPMaileri uusim versioon
Lae alla PHPMaileri uusim versioon. Seda saab teha Composeriga või käsitsi GitHubist.
1. võimalus: Lae alla Composeriga
Kui olete paigaldanud paketihalduri Composer, võite lihtsalt kasutada järgmist käsku:
composer require phpmailer/phpmailerbashTähtis: kui oled PHPMaileri paigaldanud Composeriga, pead e-kirjade saatmiseks lisama oma PHP-koodi Composer.
Võib kasutada järgmist koodirida:
require_once "vendor/autoload.php";bashMärksõna**„require_once”**tagab, et Composer lisatakse vaid üks kord. Vastasel juhul võivad tekkida programmivead. Composeriga paigaldamine on nüüd lõpetatud.
2. võimalus: Lae alla otse GitHubist
PHPMaileri lähtekoodi 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 installitud, võite hoidla ka käsurealt käsu abil kloonida.
2. samm: Lae failid lahti
Kui olete PHPMaileri lähtekoodi käsitsi alla laadinud, peate ZIP-failid lahti pakkima. Valige koht, kuhu soovite PHPMaileri installida, ja lisage PHPMailer oma skripti. Eeldades, et olete PHPMaileri 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);phpKuidas saata e-kirju PHPMaileri abil samm-sammult
1. samm: Lisage nimeruumi
Veendu, et nimeruumi seaded on õiged, et saaksid PHPMailerile 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Üksikutele klassidele pääseb ligi, lisades nende nimed viimase kaldjoone järele.
2. samm: vigade tuvastamine
Kuigi PHPMailer on väga usaldusväärne viis e-kirjade saatmiseks, võivad aeg-ajalt siiski tekkida vead. Try-catch-lause lisamine e-kirja saatmise protsessi aitab vältida seda, et teie postiserveris olevad tundlikud andmed saadetaks kasutajatele veateatena:
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. samm: Autentimine SMTP kaudu
PHPMaileri kasutamiseks peate end SMTP-protokolli kaudu autentima. Sisestage oma meiliserveri aadress vastava protokolli ( TLS/SSL või SMTP) kõrvale ning märkige lisaks kasutajanimi, parool ja port. Kasutatav protokoll ja port sõltuvad teie meiliteenuse pakkujast. Vajalikud serveri andmed leiate meiliteenuse pakkuja veebisaidilt.
$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;phpENCRYPTION_STARTTLS asemel võid krüpteerimismeetodina 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 turvaliseks andmeedastuseks vajalikke krüpteerimismeetmeid. Valiku StartTLS korral luuakse ühendus postiserveriga ilma krüpteerimiseta. Krüpteerimine rakendatakse alles hiljem. Kui TLS-krüpteerimist ei ole võimalik rakendada, toimub ülejäänud andmevahetus krüpteerimata.
SMTPS pakub suuremat turvalisust, samas kui StartTLSon ühilduvam. Ühilduvuse tõttu on StartTLS üldjuhul eelistatud valik.
4. samm: Märkige e-kirja saaja
Nüüd saate skriptis määrata oma e-kirja adressaadid.
// 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. samm: Lisa kirja sisu
Ära unusta oma e-kirja sisu. See koosneb tavaliselt teemast ja tekstist, mida saab määrata nii HTML- kui ka mitte-HTML-versioonina. Oluline on meeles pidada, et vanem tarkvara ei pruugi toetada praegust HTML5-standardit, seega võib olla mõistlik koostada oma e-kiri HTML-vormingus.
PHPMaileri abil saate manuseid hõlpsasti saata funktsiooni addAttachment abil. PHPMaileriga saab saata ka pilte, muusikat, dokumente, videoid ja GIF-faile. Lisaks saate manuseid ümber nimetada, kasutades selleks funktsioonile edastatavat valikulist teist parameetrit.
$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. samm: Kasuta õiget tähemärkide kodeeringut
Soovitatav on lubada PHPMaileris UTF-8, et vältida kuvamisvigu teiste keelte täpitähtede töötlemisel, eriti kui kasutatakse erinevaid manuseid. Selleks lisage oma PHP-skripti järgmised koodiridad:
$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';php7. samm: Saada e-kiri
Nüüd on aeg oma e-kiri ära saata. Kasuta selleks järgmist käsku:
$mail->send();phpKõik saatepäringus näidatud kood on kõige parem paigutada skripti try-lause plokki, et saaksite vead kinni püüda.
Koodinäide e-kirja saatmiseks PHPMaileri abil
Allpool on toodud kogu kood, mida vajad, et saata PHPMaileri abil valitud adressaadile 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