2.06. Servicii de E-Mail


Prezentare generală

Serviciile de email SocrateCloud sunt create cu scopul de a centraliza și controla trimiterea de email-uri din intreg sistemul. Pentru a activa acest mecanism se foloseşte componenta SocrateCloud Email Service (SEMS
Structura conține o parte publica (in core-framework) și o parte privata (în sems). In partea publică stă întreg engin-ul de email, iar în partea privată, diferite implementări de servicii de e-mail (după cum se poate vedea în poza de mai jos).
Dată fiind această structură, în viitor se pot adaugă și alte componente SocrateCloud care sa conțină implementări specifice ale serviciului de email.

S-a păstrat şi funcționalitatea de bază (SocrateOpen/Compiere), astfel încât, dacă nu se face nicio setare, email-urile se trimit ca și până la apariția componentei (același cod java), cu setările de mail de pe fiecare titular, cu excepția că apelurile trec prin serviciile SocrateCloud iar mesajele se țin într-o locație nouă în baza de date și într-un alt format (prezentat mai jos)

Arhitectura în linii mari este prezentată în poza de mai jos. În funcție de setările serviciului de email se folosește implementarea corespunzătoare.

Interfaţa utilizator - setup servicii email

Pentru a configura, respectiv activa un anumit serviciu de email, se folosesc următoarele:
  • tipurile de servicii de email şi serviciul activ (implicit) - acestea sunt predefinite de către BIT, iar administratorul de sistem poate stabili care este serviciul pe care il activează pentru mediul lui. Atenţie! setarea este efectuată la nivel de sistem, deci valabilă pentru toţi titularii din mediul respectiv.
  • setările specifice (opţional) de la nivel de titular.

Setup

  • se instalează componenta SEMS
  • se intră cu System și se deschide fereastra Servicii Email, se selectează un tip de Tip de serviciu și se completează cu setările serviciului respectiv. În poza de mai jos e un exemplu de configurare cont Gmail care necesită doar user și parolă (în poza e expandat tabul de setări din fereastra de setări de email)
  • pentru ca serviciul să fie folosit este necesar să fie marcat ca Activ și Implicit, iar după salvare (master și detaliu) să se dea un cache reset Client + Server
https://sites.google.com/a/bitsoftware.ro/manual-socrateopen/acasa-as/02-initializarea-sistemului/2-2-4-servicii-de-e-mail/setari_serviciu_email.png


Setări folosite la trimiterea de email-uri

  • dacă nu este instalată componenta SEMS se folosesc setările de la nivel de titular, din fereastra Tenant (implementarea implicită a serviciului);
  • dacă se instalează componenta SEMS și nu se configurează nimic, la fel, se folosesc setările de pe titular (implementarea implicită a serviciului);
  • dacă se instalează componenta SEMS și adaugă servicii dar nu se marchează niciunul ca implicit, se folosesc setările de pe titular (implementarea implicită a serviciului);
  • dacă se definește un serviciu de email de tip SocrateOpen standard și se marchează ca implicit, atunci se vor folosi setările de pe titularul System la trimiterea email-urilor (pentru orice titular);
  • dacă se definește orice alt tip de serviciu de email (diferit de SocrateOpen standard), se va ține cont de setările serviciului, fără a se mai ţine cont de setările de pe titulari (nici de pe System);
  • dacă se trimite email în numele unui utilizator (de pe anumite procese) atunci se folosesc setările de la nivel de Titular (plus setarile utilizatorului - cont email si parola email din fereastra Utilizatori).

Observatii

  • nu se pot seta servicii de email la nivel de Titular;
  • de o singura setare de pe titular se tine cont tot timpul la trimiterea de email-uri, și anume "Reply To EMail", adresa la care se face reply la mesaje.

Fluxul de livrare al mesajelor

  • la primul apel al serviciului de email (care se face prin clasa java org.bitsoftware.sems.SCEmailService) sau la cache reset se încarcă implementarea specificată în setările serviciului de mail;
  • dacă nu se face nicio setare, se încarcă implementarea implicită ce folosește setările de mail de pe fiecare titular;
  • dacă apare o eroare la încărcarea unui serviciu de email marcat ca implicit se trece automat la încărcarea următorului serviciu în ordinea secvenței în care au fost definite;
  • un serviciu încărcat fără erori va fi folosit pentru toate apelurile de trimitere de email până la următorul cache reset;
  • serviciul de email poate sa creeze un email (o instanta a clasei org.compiere.util.EMail) pe care să îl trimită ulterior sau să îl creeze și să îl și trimită automat;
  • atunci când se apelează trimiterea unui email, acesta se și salvează în baza de date în tabela SEMS_Message (fereastra se poate vedea mai jos);
  • dacă mesajul nu a fost trimis cu succes se va reîncerca retrimiterea lui de către procesorul de email-uri (vezi fereastra și descrierea de mai jos).

Procesorul de email-uri

Este în standard și rulează pentru toți titularii. Mesajele se trimit în coadă câte unul pe rând.
Mod de lucru:
  • parcurge tabela SEMS_Message pentru mesaje active ce nu au fost trimise și nu sunt în curs de trimitere;
  • creează un Email folosind implementarea curentă a serviciului de email (poate sa difere de implementarea cu care a rulat inițial trimiterea de email-uri) cu informațiile stocate în baza de date;
  • în caz de succes se marchează mesajul ca trimis și se trece la următorul mesaj;
  • în caz de eșec se verifică dacă s-a atins numărul maxim de încercări (setabil din interfață pe procesor, vezi fereastra de mai jos), caz în care mesajul se marchează ca inactiv. Dacă nu s-a atins maximul se incrementează contorul, se salvează mesajul de eroare și se trece la următorul mesaj.
Modul de funcționare este schițat și în diagrama de mai jos

Reguli generale

  • adresele de email către care se trimit mesajele trebuie să fie corecte sintactic, să respecte standardul RFC 822;
  • dacă una sau mai multe adrese de email nu sunt corecte, email-ul nu se trimite şi se întoarce mesaj de eroare cu adresele greșite și cu un tip de eroare corespunzător (INVALID_EMAIL);
  • adresele de email se folosesc o singură dată (nu se acceptă duplicări);
  • o adresă nu poate fi și în To și în Cc (duplicările sunt șterse);
  • dacă nu se specifică nicio adresa destinatar, se întoarce mesaj de eroare și tipul de eroare NO_RECIPIENTS;
  • dacă email-ul are destinatari, dar niciunul nu are notificare de tip Email, se întoarce mesaj de eroare cu adresele către care nu se trimit email-uri și cu tipul de eroare corespunzător (NO_RECIPIENTS);
  • există procese care pot trimite email-uri având ca expeditor utilizatorul care face acţiunea. Pentru acest tip de email se folosesc setările de email de pe titular şi datele de autentificare de pe utilizator;
  • adresa Replay To setată pe macheta mail se folosește doar programat, în procesele în care s-a cerut acest lucru. Implicit se foloseste adresa de email setată pe titular în campul Replay To.

Interfaţa utilizator - ferestrele de gestionare a email-urilor

Fereastra: Tip serviciu email

  • Componenta: SEMS
  • Acces: System
  • Aici sunt definite clasele care execută implementarea serviciului de email. Aceste clase trebuie să respecte interfața org.bitsoftware.sems.SCEmailServiceImplInterface.


Fereastra: Servicii Email

  • Componenta: SEMS
  • Acces: System
  • Aici se definesc serviciile de email. Se pot defini mai multe servicii dar se încarcă doar cel implicit.
  • O singura înregistrare poate fi activa și implicita
  • Pentru tipul de serviciu "SocrateOpen standard" setările sunt cele de pe titularul System
  • Tabul de jos afișează setări diferite în funcție de tipul de serviciu ales



Fereastra: Mesaje Email

  • Componenta: SocrateCloud Dictionary
  • Acces: System+Titular (pe titular nu se vad mesajele de pe System)
  • Mai jos sunt două imagini, una cu varianta implicită, cu grupurile "Avansat" și "Stare" restrânse și alta cu grupurile extinse
  • Dacă email-ul ar fi fost trimis și unor persoane aflate în Cc sau în Bcc ar fi apărut și aceste câmpuri (acum sunt ascunse)
  • Dacă la destinatar sunt mai multe persoane atunci adresele de email vor fi enumerate în câmpul "Către" sau "Cc"/"Bcc"
  • Câmpurile "Către", "Cc" și "Bcc" sunt coloane virtuale. Informațiile sunt luate din taburile de jos ce reprezinta legătura dintre mesaj și utilizatori (legătură many-to-many). În aceste câmpuri nu se vor afișa mai mult de zece adrese de email. Pentru vizualizarea tuturor adreselor se navighează în taburile de sub mesaj.
  • Tabul "Făra utilizator" păstrează adresele de email către care acesta a fost trimis și pentru care nu exista utilizator in SocrateCloud
  • În grupul "Avansat" se regăsesc informații referitoare la serviciul cu care a fost trimis email-ul, id-ul acestuia, macheta de mail folosită și modulul web de unde a fost trimis email-ul
  • În grupul "Stare" se pozate verifica dacă mesajul este în curs de trimitere, dacă a fost trimis sau dacă nu; dacă nu a fost trimis cu succes, de câte ori s-a încercat retrimiterea și ultimul mesaj de eroare.

Varianta extinsă


Fereastra: Mesaje Email (coadă)

  • Componenta: SEMS
  • Acces: System+Titular (pe titular nu se vad mesajele de pe System)
  • Fereastra are același format ca și fereastra "Mesaje Email" cu excepția că sunt afișate doar mesajele care nu au fost încă trimise dar urmează sa fie trimise (sunt active) cum e cazul mesajelor n curs de trimitere sau mesajele ce au dat eroare dar se reincearca trimiterea lor (de către procesorul de email-uri) de câteva de ori (număr setabil tot la nivel de procesor de email-uri)

Fereastra: Mesaje Email (fără utilizator)

  • Componenta: SEMS
  • Acces: System+Titular (pe titular nu se vad mesajele de pe System)
  • Fereastra are același format ca și fereastra "Mesaje Email" cu excepția că sunt afișate doar mesajele trimise la adrese de email ce nu sunt asociate cu utilizatori din SocrateCloud

Fereastra: Mesaje Email (netrimise)

  • Componenta: SEMS
  • Acces: System+Titular (pe titular nu se vad mesajele de pe System)
  • Fereastra are același format ca și fereastra "Mesaje Email" cu excepția că sunt afișate doar mesajele ce nu au fost trimise și nici nu se mai încearcă retrimiterea lor (mesaje dezactivate de procesorul de email-uri ce a încercat să trimită aceste mesaje de câteva ori)

Fereastra: Procesor Serviciu Email

  • Componenta: SEMS
  • Acces: System
  • Aici se păstrează setările pentru procesorul de email-uri. Acesta parcurge mesaje de mail stocate în baza de date, care sunt active, nu au fost trimise și nu sunt în curs de trimitere. În fereastra se setează numărul maxim de încercări de trimitere a email-ului și frecventa cu care să ruleze.

Fereastra: Titular

A fost adăugat câmpul Reply To EMail pentru a specifica adresa de reply în cazul configurării serviciului de email pe System:


Fereastra: Utilizatori

  • Componenta: Dictionary
  • Acces: System+Titular
  • În tab-ul Mesaje Email din fereastra Utilizatori se pot vedea toate adresele de email (în limita a 10 adrese pe grup) la care a fost trimis mesajul, mai putin cele din Bcc


Process: Testare serviciu email

  • Componenta: SEMS
  • Acces: System+Titular
  • Procesul trimite un email cu setările serviciului de mail la adresa specificata (vezi poza mai jos)


Exemplu de email trimis cu procesul de mai sus: