Sąkynų siuntimas sąveikai

PHP / žiniatinklio programavimas – el. laiškų siuntimas be SMTP

0 komentaras(-ai)

Kai kuriate interneto programą, reikia dažniau simuliuoti el. laiškų siuntimą: eilės adresų patvirtinimo, pranešimų ar slaptažodžių atkūrimo procesus ir kt.

Kūrybos aplinkoje tikrai nereikia siųsti realius el. laiškus: tai yra lėtai, dažniau filtruojami, ir greitai gali paverkti spame (specialiai jeigu naudojate testinius adresus ar netinkamai konfigūruotą virtualų SMTP).

Bet kuriems produkcijos aplinkoje reikalingas tikras SMTP serveris, o vietinėje darbe, geriau užtikrinti paprastumą ir efektyvumą.

Šią dieną jums pasakysiu apie Symfony, konkretizuojant versiją 6.4, kurios gyvenimas baigiasi šalia, bet ji vis dar daugeliu projektų naudojama. Mailer komponentas yra puikus ir siūlo keliems sprendimams, kurie taip pat gali būti pritaikyti kitoms programavimo rėmeliams ar internetinėms svetainėms.

Taigi, štai apžvalga išbandytų metodų ir aukštiausiai pasisekusių manose.

🧪 1. Metodas 1 – null://null


Tai minimalinis metodas, idealus vienoje ar dviems el. laišku siuntimui, nepakankantis dideliams projektams.

Fajle .env

Text
MAILER_DSN=null://null

Symfony Mailer komponentas šiuo transportu nieko nedaro. Nėra siuntimo, nėra logų, nėra jokių paskelbimų. Tai visiškai taisumas: kodas veikia, bet el. laiškas nebus siunčiamas ar matomas.

👉 Puiku tik patvirtinti, kad procesas veikia, bet tolygiai nereikalinga, jeigu norėtumėte pamatyti el. laiškų turinį ar HTML formato. Jei tikrai reikia matyti kažką, galite sukurti listener'ą, kuris loguotų pranešimus (pvz., MessageLoggerListener), bet tiesiog būkime onesti: tai yra nepakankamas sprendimas, jis padeda, tačiau nėra tvarka.

🌐 2. Metodas 2 – Mailtrap naudojimas lokaliniame kodo kūrimo etape


Mailtrap yra paslauga, skirta užkirsti el. laiškų siuntimą vykdant kodo kūrimą, leidžiant jums matyti juos be tikrojo siuntimo. Tai idealus sprendimas testuoti el. laiškų siuntimą be rizikos.

🔧 2.1.Konfigūracija su Symfony


  • Registruokitejasi Mailtrap
  • Sukurkite paskyrą Mailtrape ir sukurtumėte inbox'ą savo projektui.
  • Informacijos apimašymas
  • Po to, kai sukūrėte inbox'ą, gaukite reikiamas informacijas: vartotoją, slaptažodį, host ir port.
  • Fails .env atnaujinimas
  • Jūsų failoje .env, konfigūruokite Symfony Mailer DSN tokiaip:
Text
MAILER_DSN=smtp://<utilisateur>:<motdepasse>@smtp.mailtrap.io:2525

Pakeiskite "vartotoją" ir "slaptažodį" į informaciją, duotą Mailtrape.

✅ Puikių

  • El. laiškų matavimas: galite patekti į svetainę ir peržiūrėti siunčiamus el. laiškus.
  • Saugumas: jokie el. laiškai tikrai nebus siunčiami, todėl nepasiklystės klaidų produkcinėje aplinkoje.
  • Integruotumo paprastumas: suderina su Symfony ir kitais PHP karkaso.

⚠️ Pastaba

Būkite tikri, kad Mailtrap yra gera paslauga, tačiau tai yra užsienio paslauga. Nenaudokite ją produkcinėje aplinkoje, norėdami išvengti realių el. laiškų siuntimo klaidingai.

🪐 3. Metodas 3 – MailHog, mano kitas mėgstamiausias priemonė


Svarbiausi dalykai!

MailHog yra virtualus SMTP serveris, kuris gautų visus jūsų el. laiškus ir leidžia juos peržiūrėti internetinėje sąsajose, kurią galima pateikti kaip labai gražią.

Tai puiki būdas simuliuoti produkcinę aplinką be riziko, o visada likite lokalioje aplinkoje. Tai leidžia testuoti el. laiškų siuntimą be realių paskyros perturbavimo.

Reikia tik paleisti MailHog, nukreipti Symfony į šį serverį ir viskas – visi el. laiškai bus nufiltruoti ir matomi jūsų narvesėje.

🐳 3.1. Parinktis 1 – Paleisti MailHog naudojant Docker


Jei esate Docker mokslininkas, tai yra daugiausiai greitas, tvarkomas ir transportuojamas būdas. Pateikiamos komandos paleisti MailHog Docker konteineris:

Bash
docker run -d \
--name mailhog \
-p 1025:1025 \
-p 8025:8025 \
mailhog/mailhog

Tai parodo SMTP serverį localhost:1025 ir internetinę sąsają peržiūrėti el. laiškus localhost:8025 (http://localhost:8025).

Jūsų .env faile tik reikia nurodyti:

Text
MAILER_DSN=smtp://localhost:1025

Viskas! Kada siunčiate el. laišką iš Symfony, jis bus matomas nemokamai MailHog internetinėje sąsajoje.

🔧 3.2. Parinktis 2 – natūraliai, be Docker (Debian, Linux)


Jei nesate Docker fanas arba norite natūralios įdiegimo, galite paleisti MailHog tiesioginėje jūsų kompiuterio sąveikojame. MailHog yra rašytas Go kalba, todėl įdiegti yra labai paprasta.

Štai kaip galite įdiegti natūraliąją MailHog:

Bash
wget https://github.com/mailhog/MailHog/releases/download/v1.0.1/MailHog_linux_amd64
chmod +x MailHog_linux_amd64
sudo mv MailHog_linux_amd64 /usr/local/bin/mailhog

Jei jau turite go, galite jį įdiegti naudodami šią komandą:

Bash
# Installation du binaire
go install mailhog
# On modifie la variable $PATH pour accéder au binaire sans le chemin
echo 'export PATH="$HOME/go/bin:$PATH"' >> ~/.bashrc
# ou
echo 'export PATH="$HOME/go/bin:$PATH"' >> ~/.zshrc

Tada paleiskite MailHog su:

Bash
mailhog

Ta pačia prievartos, ta pati sąsają. Ta pati rezultatai.

Asmeninis tipas: aš jį sukūrėm service ir apie tai rašyta straipsnyje:

Sukurkite Mailhog serisą Debian 12 sistema

📊 O ką reikia daryti su Symfony?

Svarbu paminėti, kad visuose atvejais MailHog yra aptiktas Symfony Web Profiler. Galite peržiūrėti el. laiškus tiesioginėje Symfony debagavimo sąsajoje, „Mails“ lange jūsų profilerio. Tai gali būti labai praktisku greitai peržiūrėti siunčiamus el. laiškų duomenis kūrimo etape.

🧠 4. Per trumpa; neskaityta


Metodas Realus siuntimas? Gali peržiūrėti turinį? Idealus?
null://null ❌ ❌ Taisyklingos užklausos
MailTrap ✅ / ❌ ✅ (failas) Realistiška simuliacija
MailHog ❌ ✅ (web UI) Realistiška simuliacija

💬 5. Išvados


Kai dirbate su el. laiškais kūrimo aplinkoje, nėra priežasčių sulaikytis realia SMTP sąsoda.

MailHog daro darbą 100 kartų geriau, lokaliose sistemose be jokių sunkumų ir tikimasi, kad netrukdykite siųsti el. laiškus produkcinėje SMTP sąsodoje dėl konfigūracijos klaidų.

As personaliai visada dirbu su mažu MailHog konteineriu, kuris veikia mano Symfony projektuose. Tai yra paprasta ir efektyva priemonė, o be jokios abejonių – puiki naudojimo patirtis.

Jums taip pat gali patikti:

Komentarai

Kol kas nėra patvirtintų komentarų.

Prisijunkite su komentuotojo paskyra, kad galėtumėte komentuoti. Prisijungti.