Šis straipsnis aprašo, kaip siųsti žinutes naudojant PHPMailer biblioteką SMTP protokolu.
Į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
Nors komandinė eilutė yra pageidaujama parinktis, galite naudoti šį metodą, jei jūsų talpinimo tiekėjas nesuteikia prieigos prie SSH arba neįdiegia Terminalo piktogramos.
PASTABA: Šiame metode skriptą reikia padėti į serverio vietą, kuri yra viešai pasiekiamas. Tai gali kelti saugumo riziką ir patariama tik tais atvejais, jei failas yra apsaugotas priemonėmis, tokiomis kaip Privatumo katalogo funkcija. Paprastai šį metodą naudoja testavimo fazėje. Baigus testavimą, rekomenduojama perkelti savo siuntimo scenarijų į saugią vietą ir jį iškviesti iš savo PHP programos. Jei nežinote, kaip iškviesti scenarijų iš savo PHP programos, rekomenduojame kreiptis į PHP programuotoją.
- 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
Šis scenarijus yra sukonfigūruotas suteikti išsamų derinimo išvestį pagal numatytuosius nustatymus. Scenarijų reikia modifikuoti, kad jis veiktų jūsų konkretiems poreikiams. Jums reikia atnaujinti šiuos elementus:
- 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.e1734110274lpmax1734110274e@res1734110274u1734110274'; // 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.e1734110274lpmax1734110274e@mor1734110274f1734110274', 'Siuntėjas'); $mail->addAddress('ten.e1734110274lpmax1734110274e@1tn1734110274eipic1734110274er1734110274', 'Jonas Vartotojas'); // Pridėti gavėją $mail->addAddress('moc.e1734110274lpmax1734110274e@2tn1734110274eipic1734110274er1734110274'); // Vardas nėra privalomas $mail->addReplyTo('moc.e1734110274lpmax1734110274e@ofn1734110274i1734110274', 'Informacija'); $mail->addCC('moc.e1734110274lpmax1734110274e@cc1734110274'); $mail->addBCC('moc.e1734110274lpmax1734110274e@ccb1734110274'); // 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}"; }