Stop Hibernate mangling the ":" casts nel nativo SQL
Il parser nativo di Hibernate tratta "::" come colon evaso e inoltra un singolo ":". CockroachDB ricevuto *****************************************************...
Continuare a riprovare il consumatore NATS durevole dell'indicizzatore dopo una distribuzione
Un rotolamento distribuisce pod sovrapposti e quello in uscita mantiene ancora il durevole consumatore, così il pod in arrivo lega a "email-metadata-indexer" fa...
Adapt gli indicizzatori dei metadati alle colonne di tipo array
Segui il cambiamento di libreria kamo-shared che mappa conversazioni/search index colonne di array come String[]/UUUID[] piuttosto che List ogni messaggio indic...
Cuocere l'indice della cartella di massa e fermarlo su guasto strutturale
Lavoro non accettato da una sessione concomitante, spazzato in modo che l'albero è pulito. L'indice di massa ha camminato pagine con il totalePages impostato a...
Non corrispondere mai ad una pista contro gli indirizzi dell'azienda
Una guida la cui e-mail è stata impostata a noreply@kamocrm.com ha abbinato ogni messaggio che l'indirizzo aveva mai inviato — un record di piombo ha superato l...
Page the lead spazza fino a quando la finestra è coperta
Una singola pagina fissa silenziosamente persa posta quando una casella di posta ha preso più di pageSize messaggi tra zecche — un'esplosione di newsletter, una...
Risponde l'indirizzo a Reply-To, e smettere di perdere le eccezioni SMTP all'interfaccia utente
Una risposta rapida a una notifica KamoCRM non è riuscita con `{"error":"Indirizzi non validi"} reso verbatim nella casella di risposta. Quella stringa è la scr...
Smettere di classificare una radice HTML multipart/collegata come allegato
Ogni email transazionale che inviamo con un logo org in linea è arrivato nel nostro /messages spettatore con un soggetto corretto e un corpo completamente vuoto...
Scansione dei repository MFA condivisi
MfaEnrollmentService è un @Service in kamo-shared-library, quindi la wildcard @ComponentScan("com.kamo") in questa applicazione lo costruisce se questo servizio...
Unisci duplicato chiave kamo che crashlooped EmailService
Il nuovo pod EmailService è stato in CrashLoopBackOff dal 16e8a05 — 22 riparte, mai una volta iniziato. serpentyaml solleva DuplicateKeyException su un livello ...
Harden il kubectl download contro l'egresso sfacciato [skip ci]
dl.k8s.io sopra l'ingresso del corridore cade in modo intermittente metà del trasferimento: curl: (56) OpenSSL SSL read: decryption fail or bad record mac che f...
Aggiungi gli endpoint mancanti di CampaignController REST per /api/email/campaigns
Lo spazio di lavoro di posta elettronica di massa/editore chiama GET/POST /api/email/campagni ecc, ma solo Servizio di campagna (il @Service) è stato mai creato...
Rimuovere ambiguo richiesta di cancellazioneMatcher che crash di avvio
EmailService monta due servlets (MVC DispatcherServlet + Spring-WS MessageDispatcherServlet a /services/*), quindi una richiesta di stringa nudaMatchers( "/api/...
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 ...
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...
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...
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...
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...
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...
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...
Correct field name and type in getFromAddresses response
Backend was sending 'email' key but frontend expected 'address', and sent type 'shared_mailbox' when frontend expected 'shared'. Also fixes hasMailboxes flag wh...
Ripiegare a org domains quando nessun set predefinito di email provider domains
KamoMailDomainValidator è stato indurito con 403 per org che hanno un DNS-verified domain in org domains ma mai aggiunto all'e-mail registro di dominio del forn...
Filifica il filtro di stato e i modelli richiesti automaticamente nell'elenco
- EmailTemplateController.list() ora accetta ?status= param e filtri utilizzando la query del repository di findByOrgIdAndStatus esistente - Auto-seeds modelli ...
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...
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.
Rinominare mailboxId→id e providerStatus→status nella risposta della mailbox
Allineare i nomi dei campi con le aspettative di frontend per gli elenchi delle caselle di posta dei membri.
Support mailbox switching by resolving IMAP credentials per mailboxId
Added getMailCredentialsByEmail to look up virtual_users by email directly, resolveForMailbox to MailProviderResolver with access verification, and optional mai...
Rename DomainService to EmailDomainService to resolve bean name conflict
The shared library's DomainService and EmailService's local DomainService both registered as 'domainService' bean, causing CrashLoopBackOff on deploy.
Correct method signatures in DomainController and MailboxController
- Fix getMemberMailboxes -> getMailboxesForMember in MailboxController - Add missing memberId parameter to getVerificationRecords and verifyDomain in DomainCont...
Extract BCC recipients from IMAP messages
BCC header is retained on sent folder copies. Now extracted alongside To and CC so the frontend can display it in sent item previews.
Provider GET returns both type and providerType, PUT accepts both
GET /api/email/provider now includes both 'type' and 'providerType' fields in the response for frontend compatibility. PUT now accepts 'type' as a fallback when...
Come quello che vedi la spedizione?
Tutto questo arriva nel vostro spazio di lavoro da solo. Iniziare sul piano gratuito e leggere di nuovo questa pagina in un mese.
