Wire DomainManager și MailboxProvisioner pentru toți furnizorii de cloud
Înlocuiți cioburile de operare nesusținute Excepție în fiecare furnizor de cloud cu apeluri HTTP reale împotriva API admin fiecărui backend: - Microsoft 365 → ...
IMAP/SMTP-backed send, folder, and search for cloud stubs
Extragerea modelului de delegare IMAP/SMTP în RezumatImapBacked CloudProvider și au Zoho, IceWarp, Exchange, Google Workspace, și Microsoft 365 extinde Ea. Clas...
MailReader cu suport IMAP pentru cotoare
Zoho, IceWarp, Exchange, Google Workspace, și Microsoft 365 toate expune IMAP, așa că sârmă fiecare cloud-furnizor mailReader metode prin EmailImapService în lo...
Se serveste inline imagini piese MIME și metadate de conținut-ID
Render <img src="cid:... [62] în mesajele UI prin expunerea părților liniare că referinţele corpului HTML. - AtașamentInfo câștigă conținutId (fără paranteze u...
Păstrați numele original și tipul de conținut la descărcarea atașamentului
Criteriile de evaluare (ambele personale) și controlorii de căsuță poștală comună) emiteau conținut-Dispoziție: atașament fără parametru de nume de fișier și ti...
Conexiuni în domeniul de aplicare pentru a construi locuri de muncă, nu Kubernetes pune în aplicare
Conexiuni la nivel de flux de lucru serializate intreaga conducta (inclusiv kubectl Rulouri). Mutați grupul la locul de muncă construi doar astfel implementa lo...
Sincronizează membrii.email atunci când căsuţa poştală primară este atribuită, modificată sau eliminată
Atunci când o cutie poștală a fost atribuită unui membru într-un org KAMO MAIL, membrii.email nu a fost niciodată actualizat, provocând EmailCredentialService s...
Mark-as-read for shared and member mailboxes
EmailController.setFlags now accepts an optional mailboxId query param and routes through resolveProviderWithMailbox so member-mailbox flags are set against the...
Handle IMAPInputStream in getMessage pentru a preveni ClassCastException
JavaMail poate returna un IMAPInputStream în loc de un string decodat de la part.getContent() atunci când conținutul mesajului nu a fost pre-inventat. ă mulaje ...
Utilizați getAstachments () pentru a se potrivi cu tipul de ambalaj boolean
***************** este un ambalaj Boolean, deci Lombok generează getHasAttachments() not isHasAttachments(). Doar acesta din urmă există pentru boolean primitiv...
Reset stale hasAttachments on sync and accumulate correctly
- Reset has_attachments=false at start of bulk sync so stale true values from old false-positive MIME detection are cleared before re-indexing - Accumulate ha...
Suport de la @ info: whatsthis
Adaugă FromAddressRequest to EmailSendRequest so the frontend can specification din care se poate trimite adresa de e-mail/împărtășit/cutie. SmtpOnlyProvider ac...
Fix attachment parsing and hasAttachment false positives
Three fixes to EmailImapService: 1. toEnvelope: narrow multipart check to multipart/mixed only — plain HTML+text emails (multipart/alternative) no longer sh...
Add com.kamo.z.shared.commerce to EnableJpaRepositories scan
**************** (required by **************** in the shared library) lives under com.kamo.z.shared.commerce but was not included in the JPA repository scan, ca...
Numele și tipul de câmp corecte în răspuns de la Adders
Platforma trimitea cheia 'e-mail' dar frontend se aştepta la 'adresă' şi a trimis tip "împărtășit mailbox" atunci când frontend se aștepta la "împărțit." De ase...
Retrageți-vă la org domenii atunci când niciun set implicit de e-mail prestator domenii
KamoMailDomainValidator a fost greu-failing cu 403 pentru orgi care au un DNS-verificat domeniu în org domenii dar niciodată adăugat la e-mail registrul de dome...
Rebuild for kamo-shared-library update (remove OrganizationType, adaugati isTopLevel)
Filtru de stare sârmă și șabloane auto-semințe necesare pe listă
- EmailTemplateController.list() acceptă acum ?status= param și filtre folosind interogarea depozitului existent ByOrgIdAndStatus - Seminte auto necesare modele...
Adaugă validator domeniu KamoMail pentru a bloca adresele de email cross-tenant
Introduce KamoMailDomainValidator componentă care verifică, la nivelul de serviciu, dacă domeniul de e-mail transmis corespunde domeniului implicit verificat al...
Reconstruiește pentru actualizarea kamo-shared-library (CREATE CHILD ORG dreapta + aplica-la steaguri)
Trage noul RolRightType.CREATE CHILD ORG (id 131), cele trei aplică-la steaguri pe ChildOrgSecurityModel, cele două supraîncărcari de servicii de 13 arg, și apl...
Reconstructie pentru updatare kamo-shared-bibrary (reparatie exclusiv upsert appConfig)
Trage de cărămidă ******************** care nu mai șterge rândurile de aplicațiiConfig ale căror tipuri de servicii sunt absente din sarcina utilă a apelantului...
Rebuild for kamo-shared-library update (effective-feature resolver)
Picks up the new AppliedModelEnforcementService methods (computeAvailabilitiesMap, isAppEffectivelyEnabled, getEffectivelyEnabledAppTypes, computeEffectiveFeatu...
Rebuild for kamo-shared-library update (applied-model enforcement + appConfigs + isPrivate)
Triggers a rebuild so this service pulls the updated kamo-shared-library containing AppliedModelEnforcementService, ChildOrgSecurityModelAppConfig entity, Servi...
Rebuild for kamo-shared-library update (runtime force rules + DEFAULT fallback in MemberRightsAppliedService)
Triggers a rebuild so this service picks up the updated **************** that applies template force rules and DEFAULT-template fallbacks on top of the existing...
Rebuild for kamo-shared-library update (master model, default role templates, force-rule resolver)
Triggers a rebuild so this service pulls the new kamo-shared-library revision containing Organization.branchTypeID, Organization.masterModelID, ****************...
Preview uses same auto-vars as sendToUser (org logo + name)
The preview endpoint now injects logoUrl, logoSimpleUrl, and orgName from the org's domain before applying sample content variables, matching the exact variable...
Auto-inject logoUrl, logoSimpleUrl, and orgName variables at send time
EmailTemplateService now merges base variables (logoUrl, logoSimpleUrl, orgName) derived from the org's primary domain before rendering, so all transactional te...
Add resetCode to password reset email, add emailVerifyByCode endpoint, send WELCOME_MEMBER after email verification
Update EMAIL_VERIFICATION sample vars to match current template
Use expiryText instead of expiryMinutes (renamed variable), and update verifyLink to point to the register subdomain (correct send path).
Preserve DB domain case in NoReply from address
Removed toLowerCase() — the domain already comes from resolvePrimaryDomain which reads org_domains from the database, so case is canonical from DB.
Resolve root domain for NoReply from-address instead of bare subdomain
resolvePrimaryDomain() was returning the first domain entry (e.g. "www") which produced NoReply@www. Now prefers root domains (parent == null) so transactional ...
Add internal.auth.secret to EmailService configmap
InternalAuthFilter was rejecting all service-to-service calls (send, seed-org) with 503 because internal.auth.secret was unconfigured. Matches the same INTERNAL...
Allow transactional send on port-25 relay and auto-seed missing templates
Port-25 SMTP (postfix) requires no auth — transactionalCredentials() was throwing ProviderUnavailableException when user/pass were unconfigured, blocking all ve...
Add dao.repositories to JPA scan so EmailTemplateRepository is found
Same pattern as KamoInitializerService — explicit basePackages overrides default scanning and must include every package that has repositories.
Add EmailTemplateCategoryController REST endpoints
**************** CRUD. Delete response includes reassignedCount — the number of templates that became uncategorized as a result of removing the category. Sessio...
Add EmailTemplateController REST endpoints + DTOs
Exposes /api/email/templates/* CRUD + preview + duplicate + reset-to-default + service-to-service /send + /seed-org/{orgId}. Top-level orgs (no parent) addition...
Add InternalAuthFilter for service-to-service endpoints
Validates X-Internal-Auth header on /api/email/templates/send and /api/email/templates/seed-org/* paths. Other paths bypass this filter (user session auth handl...
Add EmailTemplateCategoryService — CRUD for org-scoped categories
Case-insensitive name uniqueness per org enforced at service layer (matches the partial unique index in the DB). Deletion nulls category_id on affected template...
Add EmailTemplateService — CRUD + send + seed + reset-to-default
Core orchestrator for transactional email. sendToUser resolves the template, renders subject/body, picks the org's primary domain from Organization.domains, and...
Adăugare fără răspunsSenderService pentru 'NoReply@{domeniu}' from-adresă
O singură sursă de adevăr pentru e-mail tranzacţional de la adrese. Acceptă domeniu șir, minuscule-normalizează, întoarce "NoReply@<domain>." Apelantii trebuie ...
Adaugă expeditor cu șablon pentru substituția {var}}
Regex fără stat. Vars lipsă substituie șir gol și emite un jurnal WARN cu șablonKey + orgId pentru atribuire. Nicio scăpare HTML în v1 Parte din SP1.
Redenumește căsuța poștalăId→id și furnizorulStatus→status în răspunsul listei de căsuțe poștale
Aliniază numele de câmp cu așteptările frontend pentru listarea căsuțelor poștale membre.
Add concurrency group to prevent duplicate workflow runs
When a push triggers a workflow and workflow_dispatch is also fired (or two pushes arrive in quick succession), both runs would execute simultaneously. Adding a...
Ca ceea ce vezi de transport maritim?
Fiecare dintre aceste actualizări aterizează automat în spațiul de lucru. Începe gratuit și urmăriți-l crească săptămână după săptămână.