Módszerek email küldésre
Sziasztok,
Tudnátok segíteni, milyen megoldásokkal érdemes az email küldést megoldani php alól? Foglalás/kapcsolatfelvétel rendszer jelleggel. Egyenlőre alacsony forgalommal, de ha ez később változik viszonylag rugalmasan lehessen hozzá alkalmazkodni.
Köszi
■ Tudnátok segíteni, milyen megoldásokkal érdemes az email küldést megoldani php alól? Foglalás/kapcsolatfelvétel rendszer jelleggel. Egyenlőre alacsony forgalommal, de ha ez később változik viszonylag rugalmasan lehessen hozzá alkalmazkodni.
Köszi
Ez így túl általános. Ha
mail()
függvény is.Igazad van bocs, nem jól
Ez nem sokkal több információ
Tehát, az oldalon megjelenő
Érdemes kipróbálnod a
Bocsi, de pont erre lesz elég
mail()
, mert egyszerre egy űrlap, egy mail, gondolom még sima plain/text, nem is HTML. Ellapoztam, nem biztos, hogy jól idézek:Azért valami captcha-t tegyél rá, plusz arra érdemes figyelni, hogy a szolgáltatód mennyi e-mailt enged adott időintervallumban, van-e ilyen korlátozás, mert ha van, a forgalom növekedtével bajban lehetsz, amin a PHPMailer sem tud segíteni, akkor szükséged lesz egy SMTP szerverre is.
Hja, pont ezért kéne eleve
Először én is a mail()-t
mail()
-t írtam bele a fenti válaszba, de aztán azért vettem ki, mert ha (nagy valószínűséggel) utf-8-at használ vagy csatolni szeretne bármit, akkor fölösleges újra feltalálnia a spanyolviaszt.Igazából mindegy,
Én a CodeIgniter Email osztályát használom, azzal gyakorlatilag bárhogy tudok e-mailt küldeni, csatolással, kisnyulakkal együtt is.
Ezért jó egy jó keretrendszert használni; de legyen a PHPMailer, ha később bővíteni kell, tényleg jobb, csak a jelenlegi kicsi feladatra bőven elég mail() is, azért javasoltam, hogy ne bonyolítsa.
Majd eldönti, ennyiből most már el fogja tudni... :)
A kérdés már csak az, hogy a
PHP-ből nincs egyszerűbb
Mindketto megoldja a
egy nagy kulonbseg van a SwiftMailer es PHPMailer kozott:
ha lattal mar ocsmany es erthetetlen kodot szorozd meg 10zel es megkapod a PHPMailer kodjat
egyetlen elonye hogy egy fajlban van minden megvalositva :D
Köszönöm a válaszokat! Nekem
a legjobban akkor jársz, ha
így ha később amikor már millió levelet küldesz és rájössz, hogy neked valami külső szolgáltatót kell mégis használnod (pl mailchimp), akkor csak ezt az osztályodat kell átírni a megfelelő módon egy helyen, és nem a levelet küldő kódjaidat átalakítani.
szerintem.
Az említett CodeIgniter
Multiple Protocols: Mail, Sendmail, and SMTP
Multiple recipients
CC and BCCs
HTML or Plaintext email
Attachments
Word wrapping
Priorities
BCC Batch Mode, enabling large email lists to be broken into small BCC batches.
Email Debugging tools
Szerintem ennyit elég tudnia egy profi e-mail küldő osztálynak, és ehhez nem kell semmilyen további külső eszköz (az SMTP szervert leszámítva).
Ha CI-t használ, teljesen felesleges további 3rd party cuccokkal bajlódnia ehhez, és mindehhez (ez vélemény, nem reklám) a CI core-ja 1,3 MB. Nagyon sok ilyen "apró" segítség van benne - na nem mondom, hogy mindet használom is, de az Email class helyett eszembe nem jutna mást használni.
Szerk: ettől függetlenül azt mindenképp javaslom iddqd-nek az osztály átnyálazását (system\libraries\Email.php), hogy teljesen tisztában legyen a dologgal, de sajátot írni felesleges.
Ja, és legközelebb számomra az egy plusz infó lenne bárkitől is, ha jelzi a keretrendszert amit használ, nekem úgy sokkal könnyebb válaszolni, de gondolom másoknak is.
és ehhez nem kell semmilyen
Igen, ezért
Szóval neki nem kell végülis semmi, némi manual-olvasáson kívül. :)
Rendben, akkor meg fog
használd a natív CI-t de fedd
ha bővíteni kell a funkciókat, akkor bővíted az általános osztályt is a CI funkcióival kiegészítve (ha az támogatja). ha mondjuk queue-ba akarod tenni a leveleket, akkor elég a saját osztályodban megvalósítani.
használd a CI osztályt, de ne direktbe.
Elolvastad a doksit?
Kár bonyolítani egy egyszerű gyors rendszert.
Próbáltad megérteni amit mondok?
dev rendszeren ha tesztelsz véletlenül se küldjön ki senkinek semmilyen e-mailt, hanem a címzettet cserélje le az előre beállított teszt cím(ek)re.
lássuk.
..ráadásul oda van írva az elejére, ha változás van, viszonylag rugalmasan lehessen hozzá alkalmazkodni..
Meg is értettem :)
Felhasználhatod akár az index.php elején definiált
ENVIRONMENT
konstanst is, hogy eldöntsd: melyik e-mail configgal menjenek a levelek. (Lehetséges értékek: 'development', 'testing', 'production'.)Írsz két configot a devre és az élesre, a helyén a konstans fvnyében választasz és jónapot.
Szerintem mielőtt tovább vitáznánk erről, ismerd meg jobban a CI-t; én épp azért bírom nagyon, mert szükségtelenek az ilyen trükközések / elfedések, emellett nagyon kicsi, nagyon gyors fw. És ha nagyon muszáj, akkor belenyúlok a core-ba, de eddig nem volt rá szükségem a "hiányzó" PHPDoc-okon (kódkiegészítéshez) kívül (van benne, de Komodo Edithez kicsit több is kellett).
Szerk.: ha külön osztállyal elfedné, annak egyetlen fv-e lenne...
ENVIRONMENT
Helyes
de van jobb megoldás is
így nem kell minden környezet hozzáférési adatait tárolni a config fájlban, és nem kell minden fejlesztőnek még plusz egy ENV értéket és if ágat felvenni, ha épp nem tud, vagy akar ugyanolyan beállításokat használni, mint te a fejlesztéskor.
szóval jó az csak mégsem annyira.
De, jó az
Ha a másik fejlesztő másik env-configot akar, akkor átírja a megfelelő config fájlt - ez a legegyszerűbb.
+1
Szerintem elég nagy hiba minden környezeten tárolni az összes környezet adatait.
ha külön osztállyal elfedné,
Ha külön osztállyal (netán interface-szel) elfedné, annak inkább annyi függvénye lenne, amennyit az alkalmazás (és nem a konkrét levél küldésének implementációja) megkövetel. Már csak azért is jó lenne elfedni, mert miért érdekelje az alkalmazást, hogy a levélküldés hogyan van megvalósítva? Számára mindegy, hogy a levélküldés menete
vs.
:)
A SwiftMailer (amit szintén ajánlottak, és amiről tudok nyilatkozni, lévén ezt szoktam használni, a PHPMailert meg nem) például az itteni doksit átnézve és a CI kódjába belepillantva bizony tud többet. De ha nincs is szükség ezekre a többletfunkciókra, az alkalmazás oldaláról akkor is célszerűbb, ha csak annyit látunk, amennyi az alkalmazásnak számít. Így aztán, ha később más emailező rendszert kell használni a követlemények megváltozása miatt a levelek küldéséhez, akkor elég egy, központi helyen módosítani azt.
Továbbá nem hiszem, hogy OOP környezetben az implementációs részletek elfedése az alkalmazáslogika elől trükközésnek számítana, hanem inkább célnak.
Nyilván, ha csak egy, jól behatárolt helyen szerepel a levélküldés, akkor kár elfedni (illetve tekinthető elfedettnek). Viszont ha kezd szaporodni a
$this->load->library('email');
használata, akkor célszerű elgondolkozni a rejtésen.Hát, talán...
$this->load->library('email');
), annak mások a paraméterei is, más a sablonja, stb. Ezek fölé egy mindegyiket kezelni tudó osztályt írni, majd a meghatározott helyeken helyesen használni ezt az elfedő osztályt - szerintem nem éri meg, több a munka vele.Akkor lehet ennek létjogosultsága, ha sok helyen küldesz közel azonos paraméterekkel levelet, de akkor az alkalmazáslogikában is van egy kis baj szerintem.
Azt hiszem nagyon túlrészleteztük már a témát, a kérdező rég megkapta a válaszát...
[…] ha máshol küldök emailt
használd a natív CI-t de fedd
tfh CI-ben így kell levelet
hát ezért érdemes elfedni.
de a CI valahogy így csinálja
Olyat nem tud
Olyat tud - de nem illik -, hogy
$this->load->library('Email');...
, ezzel a saját felhasználói osztályodat hívod meg. De a doksi felhívja a figyelmet a névütközések kerülésére, nyilván azért, hogy a core egységes maradjon. Azt nem tudom - még sosem próbáltam -, hogy egyáltalán betölt e fenntartott nevű saját osztályt, lehet, hogy nem.oh..
30
Vannak emberek, akiket nem
Köszi, így már világos.
Az egész koncepció rossz,
Most nem egy minden szempontból jó, de mindenképp egy jobb megoldást vázolok:
Készíteni egy osztályt, ami tárolja az email összes adatát
szabo.b.gabor pont ugyanezt
de ő még az e-mailt és az