Kako pošiljati e-pošto s PHPMailerjem
PHPMailer je programska knjižnica, ki omogoča pošiljanje e-pošte prek jezika PHP. PHPMailer se večinoma uporablja za kontaktne obrazce na spletnih straneh, vendar ga je mogoče uporabiti tudi za pošiljanje zasebnih e-poštnih sporočil.
Kaj je PHPMailer?
PHPMailer je poštna razširitev za PHP, ki jo razvija in vzdržuje skupnost PHP. E-poštna sporočila, poslana s PHPMailerjem, se redkeje znajdejo v mapi za neželeno pošto kot tista, poslana z vgrajeno poštno funkcijo PHP. To je zato, ker se e-poštna sporočila, napisana s PHPMailerjem, pošiljajo prek SMTP. SMTP pomeni Simple Mail Transfer Protocol (preprost protokol za prenos pošte) in se uporablja za prenos e-poštnih sporočil prek interneta. Poleg tega PHPMailer podpira tudi HTML-pošto in priloge, za razliko od vgrajene poštne funkcije.
Za kaj se uporablja PHPMailer?
PHPMailer je v primerjavi z drugimi ponudniki e-poštnih storitev ali vgrajenimi poštnimi programi na vašem računalniku nekoliko bolj zapleten za uporabo, zato se morda sprašujete, zakaj se ljudje odločajo zanj. Ta PHP-okvir poenostavlja ustvarjanje avtomatskih odgovorov, kot so tisti, ki so potrebni za spletno trgovino. Poleg tega je PHPMailer primeren tudi za kontaktne obrazce na spletnih straneh.
Kakšne so zahteve za PHPMailer?
Za uporabo PHPMailerja potrebujete SMTP-strežnik. Sami se odločite, ali boste uporabili poštni strežnik ponudnika ali pa si nastavili lastnega. Razširitev PHP je najbolje namestiti s pomočjo Composerja (upravitelja paketov za PHP).
Osvojitev osnov PHP je še en pomemben pogoj za uporabo PHPMailerja. Naš PHP-vodnik za začetnike vam lahko pomaga, če imate težave z osnovami PHP.
Kako korak za korakom namestiti PHPMailer
Korak 1: Prenesite najnovejšo različico PHPMailerja
Prenesite najnovejšo različico PHPMailerja. To lahko storite s Composerjem ali ročno s spletne strani GitHub.
Možnost 1: Prenos s pomočjo Composerja
Če imate nameščen upravitelj paketov Composer, lahko preprosto uporabite ta ukaz:
composer require phpmailer/phpmailerbashPomembno: če ste PHPMailer namestili s Composerjem, morate v svojo kodo PHP vključiti Composer, da boste lahko pošiljali e-pošto.
Uporabite lahko naslednjo vrstico kode:
require_once "vendor/autoload.php";bashKljučna beseda**»require_once«**zagotavlja, da se Composer vključi le enkrat. V nasprotnem primeru lahko pride do napak v programu. Namestitev s pomočjo Composerja je zdaj zaključena.
Možnost 2: Prenos neposredno iz GitHuba
Izvorne datoteke PHPMailerja lahko prenesete tudi ročno, tako da v ustreznem repozitoriju GitHub kliknete gumb »Code« in prenesete datoteko ZIP. Če imate v sistemu nameščen Git, lahko repozitorij namesto tega klonirate z ukazom v ukazni vrstici.
Korak 2: Razpakirajte datoteke
Če ste izvorno kodo PHPMailerja prenesli ročno, morate odpreti datoteke ZIP. Izberite mesto, kamor želite namestiti PHPMailer, in ga vključite v svoj skript. Če ste datoteke PHPMailerja razpakirali v mapo z imenom PHPMailer, lahko uporabite naslednje vrstice kode:
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);phpKako pošiljati e-pošto s PHPMailerjem – korak za korakom
Korak 1: Vključite imenske prostore
Preverite, ali so imenski prostori pravilno nastavljeni, da boste lahko dostopali do PHPMailerja. Za to je potrebnih Use stavkov, zato mora vaša koda vsebovati naslednje vrstice:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;phpDo posameznih razredov lahko dostopate tako, da za zadnjo poševnico vnesete njihova imena.
Korak 2: Odkrivanje napak
Čeprav je PHPMailer zelo zanesljiv način za pošiljanje e-pošte, se občasno lahko pojavijo napake. Vključitev stavka »try catch« v postopek pošiljanja e-pošte bo preprečila, da bi se občutljivi podatki z vašega poštnega strežnika poslali uporabnikom v obliki napaknega sporočila:
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();
}phpKorak 3: Prijava prek SMTP
Za uporabo PHPMailerja se morate prijaviti prek protokola SMTP. Vnesite naslov svojega poštnega strežnika ob ustreznem protokolu ( TLS/SSL ali SMTP) ter navedite vrata skupaj z uporabniškim imenom in geslom. Protokol in vrata, ki jih uporabljate, sta odvisna od vašega ponudnika poštnih storitev. Ustrezne podatke o strežniku najdete na spletni strani ponudnika poštnih storitev.
$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;phpNamesto ENCRYPTION_STARTTLS lahko kot metodo šifriranja uporabite tudi ENCRYPTION_SMTPS. Pri ENCRYPTION_SMTPS se povezava vzpostavi le, če je TLS aktiven. To pomeni, da je komunikacija s strežnikom mogoča le, če strežnik podpira ukrepe šifriranja, potrebne za varen prenos. Pri StartTLS se povezava s poštnim strežnikom vzpostavi brez šifriranja. Šele nato se uporabi šifriranje. Če ni mogoče uporabiti šifriranja TLS, bo preostala izmenjava podatkov potekala nešifrirano.
SMTPS zagotavlja višjo raven varnosti, medtem koje StartTLSbolj združljiv. Zaradi te združljivosti je StartTLS na splošno bolj priljubljena izbira.
Korak 4: Navedite prejemnika e-poštnega sporočila
Zdaj lahko v skriptu določite prejemnike svojega e-poštnega sporočila.
// 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');phpKorak 5: Vnesite vsebino e-poštnega sporočila
Ne pozabite na vsebino e-poštnega sporočila. Ta običajno obsega naslov in besedilo, ki ju lahko pripravite v obliki HTML in v obliki brez HTML. Pomembno je vedeti, da starejša programska oprema morda ne podpira trenutnega standarda HTML5, zato je priporočljivo, da e-poštno sporočilo oblikujete v formatu HTML.
S pomočjo funkcije addAttachment lahko v PHPMailerju enostavno pošiljate tudi priloge. S PHPMailerjem lahko pošiljate slike, glasbo, dokumente, videoposnetke in GIF-datoteke. Priloge lahko preimenujete tudi z dodatnim drugim parametrom, ki ga prenesete v funkcijo.
$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");phpKorak 6: Uporabite pravilno kodiranje znakov
Priporočljivo je v PHPMailerju omogočiti podporo za UTF-8, da se preprečijo napake pri prikazovanju pri obdelavi črk z naglasnimi znaki iz drugih jezikov, še posebej pri uporabi različnih prilog. To lahko storite tako, da v svoj PHP-skript dodate naslednje vrstice kode:
$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';php7. korak: Pošlji e-pošto
Zdaj je čas, da pošljete e-pošto. Za to uporabite naslednji ukaz:
$mail->send();phpNajbolje je, da vso kodo, prikazano v zahtevku za pošiljanje, vstavite v blok izjave try v svojem skriptu, da boste lahko zaznali morebitne napake.
Primer kode za pošiljanje e-pošte s PHPMailerjem
Spodaj je navedena vsa koda, ki jo potrebujete za pošiljanje e-poštnega sporočila s priloženo sliko izbranemu prejemniku s pomočjo PHPMailerja:
<?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