sablon alapú levelezés

A saját készítésű webshop rendszeremhez szükségem van sablon alapú levelezőre. A rendszer többnyelvű és különböző kontrollerek is folytatnak levelezést.

Továbbá a levelek két féle formában gondoltam, hogy kimennek egyenlőre.

A topikot azért nyitom, hogy ötletelhessünk, illetve a haladó Yii programozók kedvet éreznek, tanácsokat adhassanak a témához.

Regisztráció

  1. sablon > felhasználónak megerősítési kérés

  2. sablon > felhasználónak visszajelzés a regisztráció elfogadására

  3. sablon > felhasználói regisztráció jelzése az admin részére

Jelszó módosítás

  1. sablon > jelzés a felhasználó számára

[u]Jelszó emlékeztető

[/u] 1. sablon: email a felhasználó számára a linkkel

  1. sablon: email az új jelszóval

Megrendelés a webshop-ban:

  1. sablon: 8-10 fajta levél

  2. sablon: 3-4 fajta levél

Mivel a rendszer többnyelvű, többféle levél formátumról van szó és karbantarthatónak illene lennie mindenképpen az adatbázisba érdemes rakni a sablonokat.

Látható, hogy levelenként más és más típusú adatokra van szükség, amik ezek között egészen komplex generált html kódok is lehetnek. Ez azt jelenti, hogy egy adott kontroller, előfordulhat, hogy a sablon egy részét egy másik view-ból fogja generálni.

A levelezéshez a PHPMailer osztályt látom megfelelőnek.

EMail küldő felépítése:

Sablonfájlok a levelek törzsének (body rész, embeded css):

/view/mail_template/sablon_user.php

/view/mail_template/sablon_admin.ph

Adatbázis (nyelvenként, azonosítóként és a megadható címkék)

//database/mail_template

//database/languages

//lang_mail_template

[color="#C0C0C0"] Lásd melléklet![/color]

Felhasználása más kontrollerben (pl. regisztráció)

/controllers/registration

/views/mail_userdata_details

A regisztráció leírása:

  • felhasználó kitölti a regisztrációs űrlapot color="#808080"[/color]

  • a rendszer regisztráció megerősítésére egy emailt küld a felhasználó részére

> - controller/registration.php rendereli a view/registration/mail_user_details.php

> - controller meghívja a modules/mailer.php-t és rendereli az adott nyelv sablonfájlát

> - a controller betölti a levél küldö modult, beálítja a keret_sablont (/view/mail_template/sablon_user.php)

> - a levél küldő modul kicseréli a cimkéket a korábban betöltött adatokra

A cimkézéshez a dupla kapcsos zárójelet gondoltam. {{cimke}}

Akkor várom a visszajelzéseiteket, ötleteiteket!

Szia

Én a saját CRM rendszerembe úgy oldottam meg a riportkezelést (ezen belül a hasonló emaileket is ezzel küldöm), hogy integráltam a smarty-t, adatbázisba tárolom a sablonokat (szétválasztottam a keretet és a content rész is, hogy ha változás van, vagy egy cégnek más a logója pl., akkor könnyebb legyen) és egy osztállyal generálom a html kimenetet. (plusz még csatolható PDF ill. excel is. Amit ugyanígy állítok elő: html->pdf konverter illetve ha a smarty kimenete csv, akkor csv->excel konverter, az UTF8 BOM bug miatt)

Levelet pedig kétféleképpen tudok küldeni: adatváltozás esetén, vagy időzítve.

Az adatvátozáshoz kötött küldést ezzel készítettem: AuditTrial

Ezzel gyakorlatilag bármilyen adat változáshoz lehet rendelni riportot. (pl. új rendelés)

Az időzítést pedig egy saját osztállyal, amit cronból hívogatok. (Console Applications)

A marty sokféle paramétert kaphat nálam. Rendszer paramétereket, (pl.: ki van bejelentkezve ha bevan) plusz attól függően, hogy honnan jött a riport végrehajtás (adatváltozás vagy időzítés), SQL lekérdezés kimenetét is összerakom bemenő paraméternek.

De magánál a riportnál is fel lehet venni bármennyi SQL lekérdezést, mint smarty bemenő paraméter.

Ezért gyakorlatilag a rendszerből bármit le tudok kérdezni és átadni a smarty-nak.

Az ütemezett riportnál még betettem egy módosító SQL-t is, ami lefut ha kiküldte a riportot, hogy pl tudjak státuszt váltani. (kiküldve=1)

Remélem adtam ötleteket a sablonkezelő rendszerhez.

Üdv

Köszönöm a válaszod. Tetszik, hogy ütemezve is lehet indítani levélküldést. A smarty-t, sql alapú riportot és a mellékleteket most nem készítem el ebben az impementációban, de később majd szükség lesz rá biztosan.

A levelek formázásával szoktam gondban lenni, mert csak az embedded css működik szépen, amit meg az adminisztrátor nem feltétlen fog tudni használni megfelelő módon. Azaz a szerveren is érdemes tárolni valami levél másolatot, hogy a weboldalon is megnézhesse a felhasználó a levelet. Ez nem yii probléma alapvetően.

Nem tudom aktuális-e még vagy sem, de a body-nak add meg a renderpartial.




$body = $this->renderPartial('view_elerese', array('model'=>$model), true);



Köszi mindenkinek a választ. Kissé későn reagáltam, igen az ötleteket összeszedve elkészítettem a sablonozót. Nagyon kellemes és a felhasználók és ügyfél által is kellemes levelező technika lett belőle.