See artikkel kirjeldab, kuidas saata sõnumeid SMTP kaudu, kasutades PHPMaileri raamatukogu.
Sissejuhatus
SMTP raamatukogu lisamine teie rakendusse nõuab oskusi PHP programmeerimises. Kui te pole kindel, kuidas integreerida selle õpetuse näidisstsenaariumi oma PHP rakendusse, soovitame abi saamiseks pöörduda kogenud ja koolitatud PHP arendaja poole, kes saab ülesande teie eest täita.
Kui teie rakendus vajab e-kirjade saatmist, on teil kaks peamist valikut:
- Kasutage PHP
mail()
funktsiooni - Kasutage SMTP raamatukogu
PHP mail()
funktsiooni kasutamise eelis seisneb selle äärmises lihtsuses ja kasutajasõbralikkuses. Siiski on paar puudust seotud mail()
funktsiooni kasutamisega:
- Microsofti platvormidel põhinevad e-posti pakkujad kategoriseerivad PHP
mail()
abil genereeritud sõnumid rämpspostiks, kuna nad ei tunnusta PHPmail()
genereeritud DKIM päiseid. Mail()
funktsioon töötab sünkroonselt, nõudes rakenduselt pausi enne kui SMTP tehing on lõpule viidud, enne kui muid ülesandeid teostatakse.
Kui kasutate PHPMaileri sarnast SMTP raamatukogu, siis te ei puutu kokku nende samade piirangutega, kuigi see nõuab veidi rohkem konfigureerimist.
Protseduur
Selle õpetuse eesmärk on lihtsustada PHPMaileri raamatukogu seadistamist, muutes selle kiireks ja lihtsaks protsessiks.
Käsurea meetod (Soovitatav)
MÄRKUS: Palun asendage “cpanelusername” oma cPaneli kasutajanimega ja “domain.tld” oma domeeninimega.
- Logige sisse Terminali või SSH kaudu cPaneli kasutajana
- Navigeerige alamkataloogi, kuhu stsenaarium peaks eksisteerima:
Bash:
$ mkdir /home/cpanelusername/PHPMailerTest$ cd /home/cpanelusername/PHPMailerTest
- Kloonige PHPMaileri raamatukogu selle kohale
git clone
käsu abil:$ git clone https://github.com/PHPMailer/PHPMailer Kloonimine 'PHPMailer'... remote: Objektide loendamine: 37, tehtud. remote: Objektide lugemine: 100% (37/37), tehtud. remote: Objektide tihendamine: 100% (26/26), tehtud. remote: Kokku 6846 (delta 18), kasutatakse uuesti 25 (delta 11), pakke kasutatakse uuesti 6809 Objektide vastuvõtmine: 100% (6846/6846), 4.79 MiB | 6.68 MiB/s, tehtud. Delta lahendamine: 100% (4438/4438), tehtud.
- Vaadake dokumentatsiooni siin: PHPMaileri dokumentatsioon GitHubis
- Looge stsenaarium, kopeerides selle juhendi lõpus pakutud näidisstsenaariumi järgmise faili:
/home/cpanelusername/PHPMailerTest/testScript.php
- Uuendage stsenaariumi oma kohandustega.
- Testige stsenaariumi järgmise käsu abil:
$ php /home/cpanelusername/PHPMailerTest/testScript.php
Failihalduri meetod
Kuigi käsurea meetod on eelistatud valik, võite selle meetodi kasutusele võtta, kui teie majutusteenuse pakkuja ei võimalda juurdepääsu SSH-le või puudub Terminali ikoon.
MÄRKUS: Selle lähenemisviisi jaoks on vajalik stsenaariumi paigutamine serveri asukohta, mis on avalikult ligipääsetav. See võib kujutada endast turvariski ja soovitatakse ainult juhul, kui faili kaitsevad meetmed, nagu Privaatsuse kausta funktsioon. Tavaliselt kasutatakse seda lähenemisviisi testimise faasis. Kui testimine on lõpule viidud, peaksite oma saatjaskripti teisaldama turvalisemasse kohta ja seejärel kutsuma selle oma PHP rakendusest esile. Kui te ei ole kindel, kuidas skripti oma PHP rakendusest esile kutsuda, soovitame abi saamiseks pöörduda PHP arendaja poole.
- Logige sisse oma kasutaja cPaneli kontole.
- Seadistage Kataloogi Privaatsust oma “public_html” kausta jaoks.
- Failide jaotises otsige “File Manager” ikooni.
- Klõpsake “public_html” kataloogil, et see avada.
- Laadige PHPMaileri raamatukogu alla ZIP-failina: PHPMailer GitHubis
- Laadige ZIP-fail üles File Manageriga, kasutades üleval horisontaalmenüü lähedal olevat “Upload” nuppu.
- Kasutage File Manageri horisontaalmenüüs “Extract” nuppu PHPMaileri raamatukogu väljavõtmiseks.
- Loo uus PHP fail nimega “test.php” kausta “public_html” sisuga allpool toodud näidisskriptist.
- Uuendage skripti vastavalt oma kohandustele.
- Testige skripti, külastades faili URL-i: https://domain.tld/test.php
Näidisskript
See skript on vaikimisi seadistatud tootma üksikasjalikku tõrke väljundit. Skript nõuab muudatusi, et töötada teie konkreetses keskkonnas. Peate järgmist värskendama:
- Teekonna PHP failidele nõutavates avaldustes
$mail->Host
– Kasutage oma cPanel serveri hostinime. Mõnel juhul võib kasutada ka oma domeeni nime.$mail->Username
– Kasutage kehtiva e-posti konto aadressi oma cPaneli serveris.$mail->Password
– Kasutage kehtiva e-posti konto parooli oma cPaneli serveris.$mail->setFrom
– Kasutage sama aadressi, mis on määratud ülaltoodud kasutajanime konfiguratsioonis.$mail->addAddress
– Määrake saaja aadress.$mail->addReplyTo
– Määrake sama aadress, mis on määratud kasutajanime konfiguratsioonis ülalpool.$mail->addCC
– Eemaldage see või seadke see CCsaaja aadressile.$mail->addBCC
– Eemaldage see või seadke see BCC saaja aadressile.$mail->addAttachment
– Eemaldage see või värskendage tee failini, mida lisada.$mail->Subject
– Värskendage see oma soovitud teemaks.$mail->Body
– Värskendage see oma soovitud HTML-sisuks. See ei pea olema HTML, kuid see võib sisaldada HTML-i.$mail->AltBody
– Värskendage see oma sisu/sõnumi lihttekstiversiooniks.
<?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'; // Instantsimine ja [ICODE]true[/ICODE] üleandmine võimaldab erandeid $mail = new PHPMailer(true); try { //Serveri seaded $mail->SMTPDebug = 2; // Lubage üksikasjalik veateate väljund $mail->isSMTP(); // Määrake postikulu kasutama SMTP-d $mail->Host = 'smtp1.example.com;smtp2.example.com'; // Määrake peamine ja varundus SMTP serverid $mail->SMTPAuth = true; // Lubage SMTP autentimine $mail->Username = 'moc.e1728600049lpmax1728600049e@res1728600049u1728600049'; // SMTP kasutajanimi $mail->Password = 'secret'; // SMTP parool $mail->SMTPSecure = 'tls'; // Lubage TLS krüptimine, aktsepteeritakse ka [ICODE]ssl[/ICODE] $mail->Port = 587; // TCP-port, millega ühendust luua //Saajad $mail->setFrom('moc.e1728600049lpmax1728600049e@mor1728600049f1728600049', 'Postitaja'); $mail->addAddress('ten.e1728600049lpmax1728600049e@1tn1728600049eipic1728600049er1728600049', 'John Doe'); // Lisa saaja $mail->addAddress('moc.e1728600049lpmax1728600049e@2tn1728600049eipic1728600049er1728600049'); // Nimi on valikuline $mail->addReplyTo('moc.e1728600049lpmax1728600049e@ofn1728600049i1728600049', 'Informatsioon'); $mail->addCC('moc.e1728600049lpmax1728600049e@cc1728600049'); $mail->addBCC('moc.e1728600049lpmax1728600049e@ccb1728600049'); // Pooled $mail->addAttachment('/home/cpanelusername/attachment.txt'); // Lisa manus $mail->addAttachment('/home/cpanelusername/image.jpg', 'new.jpg'); // Valikuline nimi // Sisu $mail->isHTML(true); // Määrake e-kirja vorming HTML-iks $mail->Subject = 'Siin on teema'; $mail->Body = 'See on HTML sõnumi keha <b>rasvases!</b>'; $mail->AltBody = 'See on lihtteksti keha mittetekstilistele e-posti klientidele'; $mail->send(); echo 'Sõnum on saadetud'; } catch (Exception $e) { echo "Sõnumit ei saanud saata. Postkasti viga: {$mail->ErrorInfo}"; }