Naudojant PHPMailer biblioteką siųsti pranešimus naudojant SMTP protokolą

Paskutinį kartą keistas: 2023.11.21

Š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:

  1. Naudoti PHP mail() funkciją
  2. 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:

  1. 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 PHP mail() sukuriamų DKIM antraščių.
  2. 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ą.

  1. Prisijungti per Terminalą arba SSH kaip cPanel vartotojas
  2. Naršyti į aplanką, kuriame turėtų būti scenarijus:
    Bash:
    $ mkdir /home/cpanelusername/PHPMailerTest$ cd /home/cpanelusername/PHPMailerTest
  3. 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.
  4. Peržiūrėti dokumentaciją čia: PHPMailer dokumentacija Github
  5. Sukurti scenarijų, nukopijuojant šiame vadove pateiktą pavyzdinį scenarijų į šį failą:
    /home/cpanelusername/PHPMailerTest/testScript.php
  6. Atnaujinti scenarijų pagal savo nuostatas.
  7. 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ą.

  1. Prisijunkite prie savo vartotojo cPanel paskyros.
  2. Sukonfigūruokite Katalogo Privatumą savo “public_html” aplankui.
  3. Failų skyriaus pagrindu ieškokite “Failų Tvarkytojo” piktogramos.
  4. Paspauskite “public_html” katalogą, norėdami jį atidaryti.
  5. Atsisiųskite PHPMailer biblioteką kaip zip failą: PHPMailer GitHub
  6. Įkraukite zip failą į Failų Tvarkyklę naudodami “Įkelti” mygtuką, kuris yra viršuje esančiame horizontaliame meniu.
  7. Naudodami Failų Tvarkyklos horizontaliame meniu “Išskleisti” mygtuką, išskleiskite PHPMailer biblioteką.
  8. Sukurkite naują PHP failą pavadinimu “test.php” “public_html” kataloge, naudodami žemiau pateiktą pavyzdinį scenarijų.
  9. Atnaujinkite scenarijų pagal savo poreikius.
  10. Testuokite scenarijų, apsilankydami failo URL: https://domain.tld/test.php

Pavyzdinis Scenarijus

Techninė parama nepateikia pagalbos dėl šio vadovo scenarijaus įgyvendinimo, derinimo ar priežiūros. Jei kyla klaidų su jūsų scenarijumi, susipažinkite su mūsų Kaip derinti PHPMailer, jei matote “SMTP klaidą: nepavyko autentifikuoti” puslapiu, norėdami gauti papildomo pagalbos.
Pateiktas pavyzdinis scenarijus yra puikus pradinis taškas, sukurtas veikti sklandžiai su PHPMailer 6.1.2. Šis scenarijus naudoja reikalingus teiginius, kad būtų įtraukti trys pagrindiniai PHP failai, kurių reikia PHPMailer, kad jis veiktų paprasčiausiu būdu.

Š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.
Kodas:
<?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 = 'user@example.com'; // 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('from@example.com', 'Siuntėjas');
 $mail->addAddress('recipient1@example.net', 'Jonas Vartotojas'); // Pridėti gavėją
 $mail->addAddress('recipient2@example.com'); // Vardas nėra privalomas
 $mail->addReplyTo('info@example.com', 'Informacija');
 $mail->addCC('cc@example.com');
 $mail->addBCC('bcc@example.com');

// 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}";
}
Was this article helpful?
Peržiūrų: 264

BeeHosting 10-asis gimtadienis!
Iki 70% nuolaida visoms paslaugoms
+ nemokamas svetainės perkėlimas.

Beehosting.pro svetainė naudoja slapukus

Naudojame slapukus siekdami suasmeninti turinį ir skelbimus, teikti socialinės žiniasklaidos funkcijas ir analizuoti srautą. Taip pat dalijamės informacija apie tai, kaip naudojatės mūsų svetaine su mūsų socialinės žiniasklaidos, reklamos ir analizės partneriais, kurie gali ją sujungti su kita informacija, kurią jiems pateikėte arba kurią jie surinko naudodamiesi jų paslaugomis.

Menu