Kā nosūtīt e-pastus, izmantojot PHPMailer
PHPMailer ir programmatūras bibliotēka, kas nodrošina e-pasta nosūtīšanu, izmantojot PHP. PHPMailer galvenokārt tiek izmantots tīmekļa vietņu kontaktformām, taču to var izmantot arī privātu e-pastu sūtīšanai.
Kas ir PHPMailer?
PHPMailer ir pasta paplašinā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, izmantojot SMTP. SMTP ir saīsinājums no Simple Mail Transfer Protocol (vienkā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 pielikumus.
Kādam nolūkam izmanto PHPMailer?
Salīdzinājumā ar citiem e-pasta pakalpojumu sniedzējiem vai datorā instalētām e-pasta programmām PHPMailer lietošana ir nedaudz apgrūtinošāka, tāpēc varētu rasties jautājums, kāpēc cilvēki izvēlas to lietot. Šis PHP rīks atvieglo automatizētu atbilžu izveidi, piemēram, tās, kas nepieciešamas interneta veikalam. Turklāt PHPMailer ir piemērots arī tīmekļa vietņu kontaktformām.
Kādas ir prasības attiecībā uz PHPMailer?
Lai izmantotu PHPMailer, jums ir nepieciešams SMTP serveris. Jūs pats varat izlemt, vai izmantot pakalpojumu sniedzēja pastu serveri vai izveidot savu serveri. PHP paplašinājumu vislabāk instalēt, izmantojot Composer (PHP pakotņu pārvaldnieku).
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 iesācējiem.
Kā soli pa solim instalēt PHPMailer
1. solis: Lejupielādējiet jaunāko PHPMailer versiju
Lejupielādējiet jaunāko PHPMailer versiju. To var izdarīt, izmantojot Composer, vai manuāli no GitHub.
1. variants: Lejupielāde, izmantojot Composer
Ja esat instalējis pakotņu pārvaldnieku Composer, varat vienkārši izmantot šo komandu:
composer require phpmailer/phpmailerbashSvarīgi: ja esat instalē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";bashAtslēgvārds**„require_once”**nodrošina, ka Composer tiek iekļauts tikai vienu reizi. Pretējā gadījumā var rasties programmas kļūdas. Instalēšana, izmantojot Composer, tagad ir pabeigta.
2. variants: Lejupielādēt tieši no GitHub
PHPMailer avota failus var lejupielādēt arī manuāli, noklikšķinot uz pogas „Code“ attiecīgajā GitHub repozitorijā un lejupielādējot ZIP failu. Ja jūsu sistēmā ir instalēts Git, varat arī klonēt repozitoriju, izmantojot komandrindas komandu.
2. solis: Izpakuojiet failus
Ja esat manuāli lejupielādējis PHPMailer avota kodu, jums ir jāatver ZIP faili. Izvēlieties vietu, kurā vēlaties instalēt PHPMailer, un iekļaujiet 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);phpKā soli pa solim sūtīt e-pastus, izmantojot PHPMailer
1. solis: Iekļaujiet vārdu telpas
Pārliecinieties, ka vārdu telpas ir pareizi definētas, lai varētu izmantot PHPMailer. Tam ir nepieciešami 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;phpLai piekļūtu atsevišķām klasēm, pēc pēdējās slīpsvītras jānorāda to nosaukumi.
2. solis: Kļūdu noteikšana
Lai gan PHPMailer ir ļoti uzticams veids, kā sūtīt e-pastus, laiku pa laikam var rasties kļūdas. Iekļaujot e-pasta nosūtīšanas procesā „try-catch“ konstrukciju, varēsiet novērst to, ka jūsu pasta serverī esošie konfidenciālie dati tiek nosūtīti lietotā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();
}php3. solis: Autentificēšanās, izmantojot SMTP
Lai izmantotu PHPMailer, jums ir jāautentificējas, izmantojot SMTP. Ievadiet sava pasta servera adresi blakus atbilstošajam protokolam ( TLS/SSL vai SMTP) un norādiet portu, lietotājvārdu un paroli. Izmantojamais protokols un ports ir atkarīgi no jūsu pasta pakalpojuma sniedzēja. Attiecīgos servera datus var atrast pasta pakalpojuma 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;phpVietā ENCRYPTION_STARTTLS kā šifrēšanas metodi var izmantot arī ENCRYPTION_SMTPS. Izvēloties ENCRYPTION_SMTPS, savienojums 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 nepieciešamos šifrēšanas pasākumus. Izvēloties StartTLS, savienojums ar pasta serveri tiek izveidots bez šifrēšanas. Š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šroka.
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');php5. solis: Ievadi e-pasta saturu
Neaizmirstiet 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 programmas varētu nespēt atbalstīt pašreizējo HTML5 standartu, tāpēc varētu būt lietderīgi izveidot e-pastu, izmantojot HTML.
Ar PHPMailer varat viegli nosūtīt arī pielikumus, izmantojot funkciju addAttachment. Ar PHPMailer var nosūtīt arī attēlus, mūziku, dokumentus, videoklipus un GIF failus. Pielikumus varat arī pārdēvēt, izmantojot 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");php6. solis: Izmantojiet pareizo rakstzīmju kodējumu
Ieteicams PHPMailer iestatīt UTF-8, lai novērstu attēlošanas kļūdas, apstrādājot citās valodās lietotos burtus ar diakritiskajām zīmēm, it īpaši, ja tiek izmantoti dažādi pielikumi. To var izdarīt, pievienojot savam PHP skriptam šādas koda rindas:
$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';php7. solis: Nosūtiet e-pastu
Tagad ir pienācis laiks nosūtīt e-pastu. Lai to izdarītu, izmantojiet šādu komandu:
$mail->send();phpVislabāk ir ievietot visu kodu, kas norādīts pieprasījuma nosūtīšanas daļā, skripta „try“ bloka ietvaros, lai varētu uztvert jebkuras kļūdas.
Koda piemērs e-pasta nosūtīšanai ar PHPMailer
Zemāk ir redzams viss nepieciešamais kods, lai, izmantojot PHPMailer, nosūtītu e-pastu ar attēla pielikumu izvēlētajam 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