Wire DomainManager und MailboxProvisioner für alle Cloud-Anbieter
Ersetzen Sie die UnsupportedOperationException stubs in jedem Cloud-Provider mit reale HTTP-Aufrufe gegen die Ad-API jedes Backend: - Microsoft 365 - Microsoft...
IMAP/SMTP-Backed Senden, Ordner und Suche nach Cloud Stubs
Extrahieren Sie das IMAP/SMTP-Delegationsmuster in AbstractImapBackedCloudProvider und haben Zoho, IceWarp, Exchange, Google Workspace und Microsoft 365 erweite...
IMAP-unterstützter MailReader für die Cloud-Provider stubs
Zoho, IceWarp, Exchange, Google Workspace und Microsoft 365 setzen IMAP aus, so verdrahten jeden Cloud-Provider stub MailReader Methoden durch EmailImapService ...
Inline-Image MIME Teile und Oberflächen-Content-ID-Metadaten servieren
Render <img src="cid:""" in den Nachrichten UI, indem die Inline-Teile freigelegt werden dass die HTML-Körperreferenzen. - AttachmentInfo gewinnt ContentId (oh...
Original-Dateiname und Inhaltstyp im Anhang herunterladen
Die ************-Endpunkte (beide Persönliche und Shared-Mailbox-Controller) emittierten Content-Disposition: ohne Dateinamen-Parameter und Inhaltstyp: applicat...
Scope-Konkurenz zum Aufbau von Arbeitsplätzen, nicht Kubernetes setzt ein
Workflow-Level-Konkurrenz serialisiert die gesamte Pipeline (einschließlich kubectl Rollouts). Verschieben Sie die Gruppe auf den Bau-Job nur so einsetzen Arbei...
Sync members.email wenn primäre Mailbox zugewiesen, geändert oder entfernt wird
Wenn eine Mailbox einem Mitglied in einer KAMO_MAIL org zugewiesen wurde, werden Mitglieder.email wurde nie aktualisiert, was dazu führte, dass EmailCredentialS...
Mark-as-read für gemeinsame und Mitglieder-Postfächer
EmailController.setFlags akzeptiert jetzt eine optionale MailboxId Abfrage param und Routen durch resolveProviderWithMailbox, so dass Mitglieds-Mailbox-Flaggen ...
Behandeln Sie IMAPInputStream in getMessage, um ClassCastException zu verhindern
JavaMail kann einen IMAPInputStream anstelle eines dekodierten Strings von part.getContent(), wenn der Inhalt der Nachrichten nicht vorab abgerufen wurde. Die d...
Verwenden Sie getHasAntachments() zum Boolean Wrapper Typ
************ ist ein Booleaner (Wrapper), also Lombok generiert getHasAntachments() nicht isHasAttachments(). Nur letztere existiert für primitive boolean. Verw...
Reset abgestandene hat Anhäufe auf Synchronisation und richtig ansammeln
- Reset hat_attachments=false zu Beginn der Bulk-Sync so abgestandene wahre Werte von der alten falsch-positiven MIME-Erkennung werden vor der Re-Indizes gelö...
Unterstützung von Address override auf Senden
Fügt FromAddressRequest zu EmailSendRequest hinzu, so dass das Frontend angeben kann die Alias/Shared/Mailbox-Adresse zum Absenden von. SmtpOnlyProvider jetzt v...
Fix Befestigungsparing und hat Fehlalarme
Drei Korrekturen an EmailImapService: 1. toEnvelope: schmaler mehrteiliger Check nur auf multipart/mixed HTML+Text E-Mails (Multipart/Alternative) zeigen ke...
com.kamo.z.shared.commerce zu EnableJpaRepositories scan hinzufügen
**************** (erforderlich von **************** in der gemeinsamen Bibliothek) lebt unter com.kamo.z.shared.commerce in der JPA-Repository-Scan enthalten, w...
Korrekter Feldname und Typ in getFromAddresses Antwort
Backend schickte 'E-Mail' Schlüssel, aber Frontend erwartet 'Adresse', und gesendet, gaben die 'shared_mailbox' an, wenn das Frontend 'geteilt' erwartet. Auch F...
Zurück zu org_domains, wenn keine email_provider_domains-Standardeinstellung eingestellt wird
KamoMailDomainValidator war hartngesotten mit 403 für Orgs, die eine DNS-verifizierte Domain in org_domains, aber nie hinzugefügt, um die E-Mail Anbieter Domain...
Rebuild für kamo-shared-library update (OrganisationType entfernen, istTopLevel hinzufügen)
Revert AntwortEine Änderung . smtpService.send nimmt Anhänge nicht antworten
Status- und automatisch-seed benötigte Vorlagen auf der Liste aufbeeilen
- EmailTemplateController.list() akzeptiert jetzt ?status= param und filter Verwendung der vorhandenen findByOrgIdAndStatus-Abfrage - Auto-Samen erforderliche...
KamoMail-Domain-Validator hinzufügen, um Cross-Denant-E-Mail-Adressen zu blockieren
Einführung der KamoMailDomainValidator-Komponente, die überprüft, auf Service-Schicht, ob die eingereichte E-Mail-Domain mit der verifizierten Standard-Domain d...
Rebuild für Kamo-shared-Bibliothek Update (CREATE_CHILD_ORG rechts + apply-to flags)
Zieht die neue RoleRightType.CREATE_CHILD_ORG (id 131), die drei für Flaggen auf ChildOrgSecurityModel, die beiden 13-arg Service-Ladungen und die AppliedModelE...
Rebuild für Kamo-shared-Bibliothek Update (appConfig upsert-only fix)
Zieht das gehärtete ************, das appConfig-Reihen, deren Service-Typen nicht mehr aus der Nutzlast des Anrufers fehlen, löscht geräuschloser Datenverlust, ...
Rebuild für Kamo-shared-Bibliothek Update (effektive-Feature-Reseder)
Nachdem die neuen AppliedModelEnforcementService-Methoden (computeAvailabilitiesMap, isAppffectivelyEnabled, getEffectivelyEnabledAppTypes, computeEffectiveFeat...
Rebuild für Kamo-Shared-Bibliothek Update (Applied-Modell Durchsetzung + appConfigs + isPrivate)
Triggert einen Umbau, so dass dieser Service zieht die aktualisierte kamo-shared-Bibliothek mit AppliedModelEnforcementService, ChildOrgSecurityModelAppConfig E...
Rebuild für Kamo-shared-Bibliothek Update (Runtime Force Regeln + DEFAULT Fallback in MemberRightsAppliedService)
Triggert einen Umbau, so dass dieser Service die aktualisierten **************** aufgreift, der Vorlagen-Zwischen-Regeln und DEFAULT-Template-Feed-Feaebacks zus...
Rebuild für Kamo-shared-Bibliothek Update (Master-Modell, Standard-Rollenvorlagen, Force-Rule-Rechenbelegung)
Triggert einen Umbau, so dass dieser Service die neue kamo-shared-Bibliothek Revision mit Organization.branchTypeID, Organization.masterModelID, ************ en...
Vorschau verwendet dieselben Auto-Vierer wie sendToUser (org logo + Name)
Der Vorschau-Endpunkt injiziert jetzt LogoUrl, logoSimpleUrl und orgName von die Domain der Org vor der Anwendung von Sample-Content-Variablen, passend zu exakt...
Auto-Inject-LogoUrl, logoSimpleUrl und orgName Variablen zum Absenden
EmailTemplateService führt jetzt Basisvariablen zusammen (logoUrl, logoSimpleUrl, orgName) abgeleitet von der primären Domäne der Org vor dem Rendering, so dass...
Update EMAIL_VERIFICATION Beispiel vars auf aktuelle Vorlage
Verwenden Sie AblaufText statt AblaufMinutes (variabel umbenannt) und aktualisieren überprüfenLink, um auf die Register-Subdomain (korrekter Senden Pfad) zu zei...
Preserve DB Domain-Fall in NoReply von Adresse
Entfernt zuLowerCase() - die Domain kommt bereits von resolvePrimaryDomain die org_domains aus der Datenbank liest, so dass der Fall kanonisch von DB ist.
Root-Domain für NoReply from-address statt nackt subdomain
resolvePrimaryDomain() gab den ersten Domain-Eintrag zurück (z.B. "www") die NoReply@www produzierte. Jetzt bevorzugt Root-Domains (Elft == null) so Transaktion...
internal.auth.secret zur Konfiguration hinzufügen.
InternalAuthFilter lehnte alle Service-to-Service-Anrufe ab (Sende, seed-org) mit 503 weil internal.auth.secret nicht konfiguriert war. Passt das gleiche INTERN...
Transaktionsübertrag auf Port-25 Relais und automatisch geseed fehlende Vorlagen erlauben
Port-25 SMTP (Postfix) erfordert keine authentische . transaktionalCredentials() wurde Werfen ProviderUnverfüge, wenn Benutzer/Pass nicht konfiguriert waren, bl...
Fügen Sie dao.repositories zu JPA-Scan hinzufügen, so dass E-MailTemplateRepository gefunden wird
Gleiches Muster wie KamoInitializerService - explizite basePackages overrides Standard-Scanning und muss jedes Paket, das Repositorien hat enthalten.
EmailTemplateKategorieController REST endpoints hinzufügen
************ CRUD. Löschantwort enthält reassignedCount - die Anzahl der Vorlagen, die nicht als ein Ergebnis der Entfernung der Kategorie. Sitzungskontext gele...
EmailTemplateController REST Endpoints + DTOs hinzufügen
Exposes /api/email/templates/* CRUD + Vorschau + Duplikat + Reset-to-default + service-to-service /send + /seed-org/{orgId'. Top-Level orgs (keine Eltern) siehe...
InternAuthFilter für Service-to-Service-Endpunkte hinzufügen
Validiert X-Internal-Auth Header auf /api/email/templates/send und /api/email/templates/seed-org/* Pfade. Andere Pfade umgehen diesen Filter (Benutzersitzung au...
EmailTemplateKategorieService hinzufügen . CRUD für Org-scoped Kategorien
Case-unempfindliche Namensununempfindlichkeit pro org auf Service-Schicht durchgesetzt (passt mit dem teilweisen eindeutigen Index in der DB). Lösen nulls Kateg...
E-MailTemplateService hinzufügen: CRUD + senden + Saatgut + Reset-to-default
Core orchestrator für transaktionale E-Mail. sendToUser löst die Vorlage, macht Subjekt/body, wählt die primäre Domäne der org von Organization.domains, und rei...
NoReplySenderService für 'NoReply@{domain' von Adresse hinzufügen
Einzelne Wahrheitsquelle für Transaktions-E-Mail von Adressen. Akzept ein Domain-String, Kleinbuchstaben-Normalisierung, gibt "NoReply@<domain" zurück. Anrufer ...
TemplateRenderer für {{var-Ersatz hinzufügen
Staatenloser Regex-basierter Renderer. Fehlende Vars ersetzen leere Schnur und emittieren ein WARN-Log mit templateKey + orgId zur Zuordnung. Kein HTML-Emission...
Umbenennen Sie mailboxId-id und providerStatus-Status in Mailbox-Liste Antwort
Ausstimmen Sie Feldnamen mit Frontend-Erwartungen für Mitglieder-Mailbox-Inserate.
Concurrency-Gruppe hinzufügen, um doppelte Workflow-Läufe zu verhindern
Wenn ein Push einen Workflow auslöst und workflow_dispatch ebenfalls gefeuert wird (oder zwei Drücke kommen in schneller Folge), beide Läufe würden ausführen gl...
Wie, was Sie sehen Versand?
Jedes dieser Updates landet automatisch in Ihrem Arbeitsbereich. Starten Sie frei und beobachten Sie es Woche für Woche wachsen.