Įvadas
SMTP bibliotekos įtraukimas į jūsų programą reikalauja PHP programavimo įgūdžių. Jei abejojate, kaip integruoti šio vadovo pavyzdinį scenarijų į savo PHP programą, rekomenduojama kreiptis į kvalifikuotą ir apmokytą PHP kūrėją, kuris galėtų už jus atlikti užduotį. Kai jūsų programa turi siųsti el. laiškus, jūs turite du pagrindinius pasirinkimus:
- Naudoti PHP
mail()
funkciją - Naudoti SMTP biblioteką
PHP mail()
funkcijos naudojimo privalumas slypi jos didelėje paprastume ir našume. Vis dėlto yra kelios trūkumai, susiję su mail()
funkcijos naudojimu:
- Microsoft platformose pagrįsti el. pašto tiekėjai kategorizuoja naudojant PHP
mail()
sukurtus pranešimus kaip šlamšto laiškus, nes jie neatspėja PHPmail()
sukuriamų DKIM antraščių. Mail()
funkcija veikia sinchroniškai, reikalaujant, kad programa sustotų, kol baigsis SMTP transakcija, prieš atliekant kitus uždavinius.
Naudodami SMTP biblioteką, pvz., PHPMailer, jūs nebežadinsite tų pačių apribojimų, nors tai reikalauja šiek tiek daugiau konfigūracijos.
Procedūra
Šio vadovo tikslas – supaprastinti PHPMailer bibliotekos sąranką, padaryti ją greita ir paprasta.
Komandinės eilutės metodas (Rekomenduojama)
PASTABA: Prašome pakeisti “cpanelusername” į savo cPanel vartotojo vardą ir “domain.tld” į savo domeno pavadinimą.
- Prisijungti per Terminalą arba SSH kaip cPanel vartotojas
- Naršyti į aplanką, kuriame turėtų būti scenarijus:
Bash:
$ mkdir /home/cpanelusername/PHPMailerTest$ cd /home/cpanelusername/PHPMailerTest
- Klonuoti PHPMailer biblioteką į vietą naudojant
git clone
komandą:$ git clone https://github.com/PHPMailer/PHPMailer Klonuojama į 'PHPMailer'... remote: Suskaičiuojama objektų: 37, baigta. remote: Suskaičiuojami objektai: 100% (37/37), baigta. remote: Spaudžiami objektai: 100% (26/26), baigta. remote: Iš viso 6846 (delta 18), pernaudota 25 (delta 11), supakuota 6809 Gauta objektų: 100% (6846/6846), 4.79 MiB | 6.68 MiB/s, baigta. Skiriamųjų objektų išsiaiškinimas: 100% (4438/4438), baigta.
- Peržiūrėti dokumentaciją čia: PHPMailer dokumentacija Github
- Sukurti scenarijų, nukopijuojant šiame vadove pateiktą pavyzdinį scenarijų į šį failą:
/home/cpanelusername/PHPMailerTest/testScript.php
- Atnaujinti scenarijų pagal savo nuostatas.
- Testuoti scenarijų naudojant šią komandą:
$ php /home/cpanelusername/PHPMailerTest/testScript.php
Failų tvarkytojo metodas
- Prisijunkite prie savo vartotojo cPanel paskyros.
- Sukonfigūruokite Katalogo Privatumą savo “public_html” aplankui.
- Failų skyriaus pagrindu ieškokite “Failų Tvarkytojo” piktogramos.
- Paspauskite “public_html” katalogą, norėdami jį atidaryti.
- Atsisiųskite PHPMailer biblioteką kaip zip failą: PHPMailer GitHub
- Įkraukite zip failą į Failų Tvarkyklę naudodami “Įkelti” mygtuką, kuris yra viršuje esančiame horizontaliame meniu.
- Naudodami Failų Tvarkyklos horizontaliame meniu “Išskleisti” mygtuką, išskleiskite PHPMailer biblioteką.
- Sukurkite naują PHP failą pavadinimu “test.php” “public_html” kataloge, naudodami žemiau pateiktą pavyzdinį scenarijų.
- Atnaujinkite scenarijų pagal savo poreikius.
- Testuokite scenarijų, apsilankydami failo URL: https://domain.tld/test.php
Pavyzdinis Scenarijus
- PHP failų kelių teiginiuose kelius
$mail->Host
– Naudokite savo cPanel serverio vardą. Kai kuriuose atveju galite naudoti savo domeno pavadinimą taip pat.$mail->Username
– Naudokite galiojančio el. pašto paskyros adresą savo cPanel serveryje.$mail->Password
– Naudokite galiojančios el. pašto paskyros slaptažodį savo cPanel serveryje.$mail->setFrom
– Naudokite tą patį adresą, kurį nurodėte Username konfigūracijoje.$mail->addAddress
– Nustatykite tai kaip gavėjo adresą.$mail->addReplyTo
– Nustatykite tai kaip tą patį adresą, kurį nurodėte Username konfigūracijoje.$mail->addCC
– Pašalinkite tai arba nustatykite kaip kopijos gavėjo adresą.$mail->addBCC
– Pašalinkite tai arba nustatykite kaip paslėptos kopijos gavėjo adresą.$mail->addAttachment
– Pašalinkite tai arba atnaujinkite kelią iki prisegamo failo.$mail->Subject
– Atnaujinkite tai į norimą temą.$mail->Body
– Atnaujinkite taiį norimą HTML turinį. Tai gali ne būti HTML, bet gali būti HTML turinys.$mail->AltBody
– Atnaujinkite tai į gryno teksto versiją savo turinio/žinutės.
<?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'; // Sukuriamas ir perduodamas [ICODE]true[/ICODE] įjungia išimtis $mail = new PHPMailer(true); try { //Serverio nustatymai $mail->SMTPDebug = 2; // Įjungti išsamesnį derinimo išvedimą $mail->isSMTP(); // Nustatyti siuntiklį naudoti SMTP $mail->Host = 'smtp1.example.com;smtp2.example.com'; // Nurodyti pagrindinį ir atsarginį SMTP serverius $mail->SMTPAuth = true; // Įjungti SMTP autentifikavimą $mail->Username = 'moc.e1750490590lpmax1750490590e@res1750490590u1750490590'; // SMTP vartotojo vardas $mail->Password = 'secret'; // SMTP slaptažodis $mail->SMTPSecure = 'tls'; // Įjungti TLS šifravimą, taip pat priimamas [ICODE]ssl[/ICODE] $mail->Port = 587; // TCP prievadas prisijungimui //Gavėjai $mail->setFrom('moc.e1750490590lpmax1750490590e@mor1750490590f1750490590', 'Siuntėjas'); $mail->addAddress('ten.e1750490590lpmax1750490590e@1tn1750490590eipic1750490590er1750490590', 'Jonas Vartotojas'); // Pridėti gavėją $mail->addAddress('moc.e1750490590lpmax1750490590e@2tn1750490590eipic1750490590er1750490590'); // Vardas nėra privalomas $mail->addReplyTo('moc.e1750490590lpmax1750490590e@ofn1750490590i1750490590', 'Informacija'); $mail->addCC('moc.e1750490590lpmax1750490590e@cc1750490590'); $mail->addBCC('moc.e1750490590lpmax1750490590e@ccb1750490590'); // Priedai $mail->addAttachment('/home/cpanelusername/attachment.txt'); // Pridėti priedus $mail->addAttachment('/home/cpanelusername/image.jpg', 'new.jpg'); // Pasirinktinis pavadinimas // Turinys $mail->isHTML(true); // Nustatyti el. laiško formatą kaip HTML $mail->Subject = 'Štai tema'; $mail->Body = 'Tai HTML žinutės kūnas <b>paryškintas!</b>'; $mail->AltBody = 'Tai grynais tekstu nurodytas jūsų turinio/žinutės variantas'; $mail->send(); echo 'Žinutė išsiųsta'; } catch (Exception $e) { echo "Žinutės išsiųsti nepavyko. Mailer klaida: {$mail->ErrorInfo}"; }