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
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:
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:
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:
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:
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ą:
# 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:
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.
Komentarai
Kol kas nėra patvirtintų komentarų.
Prisijunkite su komentuotojo paskyra, kad galėtumėte komentuoti. Prisijungti.