Šis raksts apraksta, kā nosūtīt ziņojumus ar SMTP, izmantojot PHPMailer bibliotēku.
Ievads
SMTP bibliotēkas iekļaušana jūsu lietotnē pieprasa PHP programmēšanas prasmju. Ja jums nav skaidrības, kā iekļaut piemēra skriptu, kas sniegts šajā pamācībā, savā PHP lietotnē, ieteicams meklēt palīdzību no pieredzējuša un apmācīta PHP izstrādātāja, kurš var pildīt šo uzdevumu jūsu vietā.
Kad jūsu lietotnei ir nepieciešams nosūtīt e-pasta ziņojumus, jums ir divas galvenās izvēles:
- Izmantojiet PHP
mail()
funkciju - Izmantojiet SMTP bibliotēku
PHP mail()
funkcijas izmantošanas priekšrocība ir tās liela vienkāršība un draudzīgums lietotājam. Tomēr ir daži trūkumi, kas saistīti ar mail()
funkcijas izmantošanu:
- E-pasta nodrošinātāji, kas balstīti uz Microsoft platformām, kategorizē ar PHP
mail()
ģenerētus ziņojumus kā nevēlamu pastu, jo tie nesaprot PHPmail()
ģenerētos DKIM galvenes. Mail()
funkcija darbojas sinhroni, prasot lietojumprogrammai pauzēt, kamēr SMTP transakcija pabeidzas, pirms veikt citus uzdevumus.
Izmantojot SMTP bibliotēku, piemēram, PHPMailer, jūs nesaskarsit ar šādām pašām ierobežojumiem, lai gan tas prasa nedaudz vairāk konfigurācijas.
Procedūra
Šīs pamācības mērķis ir optimizēt PHPMailer bibliotēkas iestatīšanu, padarot to ātru un vienkāršu procesu.
Komandu rindas metode (Ieteicama)
PIEZĪME: Lūdzu, aizstājiet cpanelusername ar savu cPanel lietotājvārdu un domain.tld ar savu domēna vārdu.
- Piesakieties, izmantojot Terminalu vai SSH kā cPanel lietotājs
- Navigējiet uz apakškatalogu, kurā jābūt skriptam:
Bash:
$ mkdir /home/cpanelusername/PHPMailerTest$ cd /home/cpanelusername/PHPMailerTest
- Klonojiet PHPMailer bibliotēku uz vietu, izmantojot
git clone
komandu:$ git clone https://github.com/PHPMailer/PHPMailer Klonēšana 'PHPMailer'... Tālu: Objektu numerācija: 37, gatavs. Tālu: Objektu numerācija: 100% (37/37), gatavs. Tālu: Saspiešanas objekti: 100% (26/26), gatavs. Tālu: Kopēšanas objekti: 100% (6846/6846), 4,79 MiB | 6,68 MiB/s, gatavs. Datu izšķirtspēja: 100% (4438/4438), gatavs.
- Pārskatiet dokumentāciju šeit: PHPMailer dokumentācija GitHub
- Izveidojiet skriptu, nokopējot piemēra skriptu, kas vēlāk sniegts šajā ceļvedī, uz šādu failu:
/home/cpanelusername/PHPMailerTest/testScript.php
- Atjauniniet skriptu ar savām pielāgojumiem.
- Pārbaudiet skriptu ar šādu komandu:
$ php /home/cpanelusername/PHPMailerTest/testScript.php
Failu pārvaldības metode
Lai gan komandu rindas metode ir ieteicamā opcija, jūs varat izmantot šo metodi, ja j
ūsu mākonis nedod piekļuvi SSH vai trūkst termināļa ikonas.
PIEZĪME: Šī pieeja prasa skriptu novietot servera vietā, kas ir publiski pieejama. Tas var radīt drošības risku, un to ieteicams izmantot tikai tad, ja fails ir aizsargāts ar pasākumiem, piemēram, Privātuma direktorijas funkcija. Parasti šo pieeju izmanto testēšanas posmā. Kad tests ir pabeigts, jums vajadzētu pārvietot savu pasta sūtītāja skriptu uz drošu vietu un to izsaukt no sava PHP lietotnes. Ja jums nav skaidrības, kā izsaukt skriptu no jūsu PHP lietotnes, iesakām meklēt palīdzību no PHP izstrādātāja.
- Pierakstieties savā cPanel kontā.
- Iestatiet Direktorijas Privātumu jūsu “public_html” mapē.
- Sadaļā “Files” meklējiet “File Manager” ikonu.
- Noklikšķiniet uz “public_html” direktorijas, lai to atvērtu.
- Lejupielādējiet PHPMailer bibliotēku kā zip failu: PHPMailer GitHub
- Ielādējiet zip failu File Manager ar “Upload” pogu no horizontālā izvēlnes tuvumā augšpusē.
- Izmantojiet File Manager horizontālajā izvēlnē “Extract” pogu, lai izvilktu PHPMailer bibliotēku.
- Izveidojiet jaunu PHP failu ar nosaukumu “test.php” direktorijā “public_html” ar zemāk esošā piemēra skripta saturu.
- Atjauniniet skriptu ar savām pielāgojumiem.
- Pārbaudiet skriptu, apmeklējot faila URL: https://domain.tld/test.php
Piemēra Skripts
Šis skripts ir iestatīts, lai nokļūtu detalizētā atkļūdošanas izvadē pēc noklusējuma. Skripts prasīs pielāgošanu, lai strādātu jūsu konkrētajā vidē. Jums jāatjaunina šādi:
- Celi uz PHP failiem obligātajos paziņojumos
$mail->Host
– Izmantojiet savas cPanel servera resursdatora nosaukumu. Dažos gadījumos var izmantot jūsu domēna nosaukumu.$mail->Username
– Izmantojiet derīga e-pasta konta adresi savā cPanel serverī.$mail->Password
– Izmantojiet paroli derīgam e-pasta kontam savā cPanel serverī.$mail->setFrom
– Izmantojiet to pašu adresi, kas norādīta iepriekšējā lietotājvārda konfigurācijā.$mail->addAddress
– Iestatiet saņēmēja adresi.$mail->addReplyTo
– Iestatiet to pašu adresi, kas norādīta iepriekšējā lietotājvārda konfigurācijā.$mail->addCC
– Noņemiet vai iestatiet CC saņēmēja adresi.$mail->addBCC
– Noņemiet vai iestatiet BCC saņēmēja adresi.$mail->addAttachment
– Noņemiet vai atjauniniet ceļu uz pielikumu failam.$mail->Subject
– Atjauniniet ar vēlamo tematu.$mail->Body
– Atjauniniet ar vēlamu HTML saturu. Tas nekādā gadījumā nav jābūt HTML, bettas var saturēt HTML.$mail->AltBody
– Atjauniniet ar teksta versiju savas ziņas.
<?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require '/home/cpanelusername/PHPMailerTest/PHPMailer/src/Exception.php'; require '/home/cpanelusername/PHPMailerTest/PHPMailer/src/PHPMailer.php'; require '/home/cpanelusername/PHPMailerTest/PHPMailer/src/SMTP.php'; // Instancēšana un [ICODE]true[/ICODE] padod izņēmumu iespēju $mail = new PHPMailer(true); try { //Servera iestatījumi $mail->SMTPDebug = 2; // Iespējot izsmalcinātu atkļūdošanas izvadi $mail->isSMTP(); // Iestatīt pasta sūtītāju izmantot SMTP $mail->Host = 'smtp1.example.com;smtp2.example.com'; // Norādiet galvenos un rezerves SMTP serverus $mail->SMTPAuth = true; // Iespējot SMTP autentifikāciju $mail->Username = 'moc.e1735569638lpmax1735569638e@res1735569638u1735569638'; // SMTP lietotājvārds $mail->Password = 'secret'; // SMTP parole $mail->SMTPSecure = 'tls'; // Iespējot TLS šifrēšanu, ir pieņemts arī [ICODE]ssl[/ICODE] $mail->Port = 587; // TCP ports, lai izveidotu savienojumu //Saņēmēji $mail->setFrom('moc.e1735569638lpmax1735569638e@mor1735569638f1735569638', 'Sūtītājs'); $mail->addAddress('ten.e1735569638lpmax1735569638e@1tn1735569638eipic1735569638er1735569638', 'John Doe'); // Pievienot saņēmēju $mail->addAddress('moc.e1735569638lpmax1735569638e@2tn1735569638eipic1735569638er1735569638'); // Vārds nav obligāts $mail->addReplyTo('moc.e1735569638lpmax1735569638e@ofn1735569638i1735569638', 'Informācija'); $mail->addCC('moc.e1735569638lpmax1735569638e@cc1735569638'); $mail->addBCC('moc.e1735569638lpmax1735569638e@ccb1735569638'); // Pielikumi $mail->addAttachment('/home/cpanelusername/attachment.txt'); // Pievienot pielikumus $mail->addAttachment('/home/cpanelusername/image.jpg', 'new.jpg'); // Iespējams nosaukums // Saturs $mail->isHTML(true); // Iestatīt e-pasta formātu uz HTML $mail->Subject = 'Tēma'; $mail->Body = 'Šī ir HTML ziņas ķermenis <b>pasvītrots!</b>'; $mail->AltBody = 'Šis ir ķermeņa teksts vienkāršiem tekstveida pasta klientiem'; $mail->send(); echo 'Ziņa ir nosūtīta'; } catch (Exception $e) { echo "Ziņu nevarēja nosūtīt. Pasta sūtītāja kļūda: {$mail->ErrorInfo}"; }