Variabili del campione dell'editor per i modelli di notifica mancati
Campioni di anteprima per MISSED CHAT MESSAGE e SUPPORT TICKET REPLY incl. raw vs. html-escaped sender/title varianti utilizzate dai corpi canonici.
Microsoft 365 mail tramite app Microsoft Graph (zero per-mailbox setup)
Microsoft 365 mail ora legge / invia tramite app Microsoft Graph (Mail.ReadWrite/Mail. Invia autorizzazioni di applicazione) invece di IMAP — una app le credenz...
Ricostruire per modello canonico LOAN STATUS UPDATE condiviso (9fab88c)
Ricostruire per raccogliere LOAN DOCS READY LO modello canonico (shared-lib)
Smettere di serializzare il ricevitore calcolato xoauth2 che ha rotto la cache MailCredentials Redis
MailCredentials è memorizzato in Redis (GenericJackson2Json). Il aggiunto `isXoauth2()` boolean getter è stato serializzato come una proprietà "xoauth2" ma non ...
Percorrere la posta di tutti i fornitori di cloud attraverso IMAP/SMTP con OAuth2 (XOAUTH2)
Provider cloud (Microsoft 365, Exchange Online, Google Workspace, Zoho, IceWarp) Ereditò la lettura e l'invio da parte del personale, ma il risolutore non ha ma...
Consenso "mostra immagini esterne" lato server
Sostituisce il client-local (localStorage) che ricorda la scelta dell'immagine esterna con un record durevole per membro. Nuovo RemoteImageConsentService (fail-...
Scope KamoMail mailbox/domain che elenca i propri domini dell'org (perdita di cross-tenant)
E' un'email da virtual users. 'Nome SELECT DA virtual domains') senza og scoping, quindi mailbox/domain importato EVERY org's KamoMail mailboxes in the caller's...
Persist selezionato OAuth provider su callback in modo da smette di tornare a KamoMail
Passare un org a Microsoft 365 (o Google Workspace / Zoho) non è mai bloccato: il callback OAuth memorizzato gettoni e solo capovolto stato su una riga del forn...
Risolvere il logo e-mail di benvenuto dall'host tema org, non l'apice
I loghi dell'intestazione/footer nelle e-mail di sistema (welcome/verification) sono stati costruiti come Un percorso di apice che esiste solo sul Kamo sito di ...
Confronto costante dell'età interna (oracolo di timing)
Sostituire String.equals con MessageDigest.isEqual risposta quindi la latenza non può fallire il X-Internal-Auth condiviso byte-byte. La spazzata su tutta la fl...
Vars campione per l'anteprima del modello di riunione-sommario
Aggiunge un campioneVariables caso per il nuovo modello di riunione-sommario così lo steward anteprima UI rende contenuti realistici.
Endpoint interno per creare/cancellare l'evento del calendario di un membro
POST /api/internal/calendar/events (X-Internal-Auth gated) risolve il membro -> utente -> calendario primario (creare un default se necessario) e crea un evento...
Ridirezione pubblica fissa + gateway-forwards
Piattaforma email OAuth (Microsoft 365 / Google / Zoho) non aveva pubblico valido redirect URI: il reindirizzamento è derivato dall'host richiesta, che in prod ...
Ricostruire contro gated condiviso-lib (mlos.intake fagioli ora opt-in; correzioni CrashLoop)
Wire mlos-internal-auth (INTERNAL AUTH SECRET) in distribuzione [skip ci]
EmailService's InternalAuthFilter guards /api/email/templates/send + /seed-org on interno.auth.secret, che era unset (chiuso 503). Condividi l'esistente valore ...
Ritorno 422 (non 500) quando il membro non ha casella di posta
elencoPiù vecchi e altri endpoint leggiti hanno lanciato IllegalStateException da MailContext.toMailCredentials() quando un membro non aveva credenziali IMAP fo...
Non salvare transazionale NoReply invia ad una cartella Invia
NoReply è un indirizzo solo invio senza casella di posta, ma ogni transazione inviare ancora tentato un append IMAP alla sua cartella Sent, producendo un rumoro...
Modifiche per aggiungere il supporto di password di cambiamento ai profili di account
Conti di casella di posta self-heal da app DB (ricupero del motore)
L'app DB è la fonte della verità per la quale dovrebbero esistere le caselle di posta; KamoMail account in diretta negli utenti virtual user del server di posta...
Mailbox list API restituisce l'interfaccia utente
GET /api/email/mailboxs ha restituito l'entità grezza (providerStatus, lastSyncedAt, nessun conteggio dei membri). Le impostazioni dell'UI leggono... lo stato e...
Autorizzare l'accesso alla casella di posta privilegiata per leggere + send-as
risolvereForMailbox ha concesso solo l'accesso tramite un'assegnazione diretta MemberMailbox, Quindi le cassette postali sono in superficie. NoSuchElementExcept...
Migra a k1m1 (clone+registry+kubeconfig da k1m1, drop k2m1, semplice installazione kubectl)
Ricostruisci per l'aggiornamento delle librerie kamo-shared (esign signer email templates)
Raccoglie i nuovi modelli canonici esign.signer verification + esign.signer invite in modo che semeForOrg può semerli prima di inviare.
Bump for kamo-shared-library 1.5.0 snapshot aggiornamento (catalogo programmi M2)
Wire DomainManager e MailboxProvisioner per tutti i fornitori di cloud
Sostituire le stubs UnsupportedOperationException in ogni provider cloud con vere chiamate HTTP contro ogni API di amministrazione di backend: - Microsoft 365 ...
IMAP/SMTP-backed send, folder, and search for cloud stubs
Estrarre il modello di delegazione IMAP/SMTP in AbstractImapBackedCloudProvider e hanno Zoho, IceWarp, Exchange, Google Workspace, e Microsoft 365 estendere Ecc...
IMAP-backed MailReader per il cloud-provider stubs
Zoho, IceWarp, Exchange, Google Workspace, e Microsoft 365 tutti espongono IMAP, quindi collegare i metodi MailReader di ogni cloud-provider tramite EmailImapSe...
Serve l'immagine inline MIME parti e la superficie
Render <img src="cid:..."> nei messaggi UI esponendo le parti in linea che i riferimenti del corpo HTML. - AttachmentInfo ottiene il contenutoId (senza staffe ...
Conservare il nome del file originale e il tipo di contenuto sul download dell'allegato
I punti finali (entrambi i punti personali) e controller di posta elettronica condivisa) emettono Contenuto-Disposizione: allegato con nessun parametro nome fil...
Capacità di costruire posti di lavoro, non Kubernetes schiera
Convalutazione del flusso di lavoro serializzata l'intero gasdotto (compreso il kubectl rollout). Spostare il gruppo al lavoro di costruzione solo in modo da di...
Sincronizza i membri.email quando la casella di posta primaria viene assegnata, modificata o rimossa
Quando una casella di posta è stata assegnata a un membro in un org KAMO MAIL, i membri.email non è mai stato aggiornato, inducendo EmailCredentialService a non...
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...
Maniglia IMAPInputStream in getMessage per evitare ClassCastException
JavaMail può restituire un IMAPInputStream invece di uno String decodificato da part.getContent() quando il contenuto del messaggio non è stato pre-fetched. The...
Utilizzare getHasAttachments() per abbinare il tipo di wrapper Boolean
E' un Boolean, quindi Lombok. genera getHasAttachments() non èHasAttachments(). Quest'ultimo solo esiste per il booleano primitivo. Utilizzare Boolean.TRUE.equa...
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...
Supporto daAddress override on send
Aggiunge FromAddressRequest a EmailSendRequest in modo che il frontend possa specificare alias/shared/mailbox indirizzo da inviare. SmtpOnlyProvider ora usa que...
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...
Come quello che vedi la spedizione?
Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.