Levélküldés – rendszerleírás
A központi küldő form két módja, a validációs sorrend, a sorba állított, azonnali és ütemezett küldés, a csatolmány-feltöltés, a háttérfeladatok és a jogkulcsok.
Áttekintés
A küldő form két módban működik: modul-kötött (sor-akcióból, modul- és objektumazonosítóval) és szabad (Levelezés → Levél küldése). Minden küldés a Dlbtmail::dispatch() központi úton megy; modulonkénti saját küldés nincs. A táblanevek a telepítés saját előtagjával állnak az adatbázisban.
Adatmodell
| Tábla | Szerep |
|---|---|
email_message | a kiküldött levél napló-sora |
mail_log_item | címzettenkénti tétel |
mail_attachment | a levél csatolmányai (dokumentumtári hivatkozás) |
cron_queue | a sorba állított küldési feladat |
mail_template, mail_template_description, mail_channel | sablon és csatorna (olvasás) |
A form és a keresők
- A sablonlistát a
templatesForadja: modul módban csak a modul sablonjai, szabad módban csak a szabad sablonok. A sablon client-hatóköre ellenőrzött (error_template_scope). search: címzett-kereső (felhasználók, személyek, cégek);docsearch: dokumentumtári kereső tartalmi szűréssel, adocument/document::listjogot is kéri;preview: a sablon renderelése a modul változóival (collectVars, a tulajdonos modulmailVars()-a). Tulajdonos modulok:nav/taxaccount,finance/settlement,nav/ifa.- A csatornát a
resolveChanneloldja fel a client alapján.
Küldés (mail/send.dispatch)
- Tárgy és törzs kötelező (a beküldött entitások dekódolva).
- Címzettek normalizálása (
normalizeAddress); érvénytelen cím név szerint hibát ad. Csoport-címzettek feloldása tartalmi szűréssel (resolveGroup). Papír módban címzett nem kötelező. - Levél-fajta:
transactionalvagynewsletter. - Mód: alapból sorba állított (visszavonható);
immediatecsak amail/send::immediatejoggal, enélkül naplózva sorba kerül. - Ütemezett időpont: érvényes dátum, múltbeli tiltott (1 perc tűrés).
- Generált mellékletek: a tulajdonos modul tervei (
generatePlans); ha lehetett volna terv, de nem érkezett, hiba. - Csatolmányok tartalmi szűrése (
docIdsInScope), majddlbtmail->dispatch(). A könyvtár a gmail, ms365, smtp és mail szolgáltatót, a tiltólistát és a leiratkozó linket kezeli.
Csatolmány-feltöltés
A mail/send.upload a fájlt a közös Dlbtdocstore::addDocument() úton a client dokumentumtárába tölti objektum-típussal. Üres POST-nál post_max_size hibát ad, a tárhely-szabály hiányát kimondja. Jog: canAction(upload); a client a tartalmi hatókörön belül (error_upload_client).
Háttérfeladatok
mail_message: egyszeri feladat, a sorba állítás hozza létre; a napló-sorpayload_json-jából küld (Dlbtmail::runQueued). Visszavont sor nem küldhető; újrapróbálás a csatorna próbálkozási száma és várakozási ideje szerint.mail_sweep: globális, ötpercenként fut, önfenntartó (catalog/controller/mail/batch::processSweepForCronqueue); az elveszett sor-bejegyzésű vagy beragadt (releaseStuck) leveleket a napló alapján újraindítja (dueQueuedIds).
Jogosultság
- Szabad levél:
maySend('')=canAction(mail/send, send); a form megnyitásacanAction(send, list)ésmaySend(module). - Modul-kötött levél:
canAction(<modul>, sendmail); azeditnem foglalja magába. immediateésuploadkülön kulcs; adebugcsak a katalógusban szerepel, a vezérlő nem ellenőrzi.- A kulcsok a seedekben nincsenek besorolva; a gyakorlatban
UNMAPPED.