アプリDB(ドリフト回収)によるセルフメールボックスアカウント
アプリケーションDBは、メールボックスが存在するべき真実のソースです。 KamoMail メールサーバのvirtual usersでアカウントをライブ。 メールDBがデータを失うと、 app レコードが残っている間、メールボックスはプロバイダで欠落しています。 - MailboxSelfHealService:スター...
メールボックス リスト API は UI 字型 **************** を返します
GET /api/email/mailboxes は、生体 (providerStatus, lastSyncedAt) を返す 会員数なし 設定 UIが読み込まれる**************** ステータスは常に未定義で、すべてのメールボックスが "pending" としてレンダリングされました。 サイトマップ l...
特権ベースのメールボックスへのアクセスを許可する + 送信する
resolveForMailbox は、直接の MemberMailbox の代入によってのみアクセスを許可しました。 so mailboxes は、 ************************************************************************************...
Kamo-shared-library update(署名者メールテンプレート)の再構築
Esign.signer verification + の新しい正式なテンプレートを選ぶ esign.signer invite なので seedForOrg は先頭にそれらを見ることができます.
すべてのクラウドプロバイダのためのWire DomainManagerとMailboxProvisioner
すべてのクラウドプロバイダでサポートされていないOperationExceptionスタブを置き換える 各バックエンドの管理者 API に対する実際の HTTP 呼び出し: - Microsoft 365 → Microsoft Graph (/users, /domains, /verify,...) を使用して ...
IMAP/SMTP バックアップ送信、フォルダ、クラウドスタブの検索
IMAP/SMTP デリゲーションパターンを AbstractImapBackedCloudProvider に抽出 Zoho、IceWarp、Exchange、Google Workspace、Microsoft 365の拡張機能 お問い合わせ ベースクラスはMailSender、MailReader、フォルダMan...
IMAP-backed MailReader クラウド provider のスタブ
Zoho、IceWarp、Exchange、Google Workspace、およびMicrosoft 365はすべてIMAPを公開します。 そのため、EmailImapService を通じて、各クラウドprovider の stub の MailReader メソッドをそれぞれ自動化します。 unsupported...
インラインイメージをサーブ MIME の部品および表面 コンテンツ ID メタデータ
Render <img src="cid:..."> インライン部分を公開することで、メッセージ UI で HTML ボディ参照。 - AttachmentInfo は contentId (角度ブラケットなし) とインラインフラグを獲得します。 - parseMultipart と getAttachment は ...
元のファイル名とコンテンツタイプを添付ダウンロードに保存する
メニュー と共有メールボックスコントローラ) は、Content-Disposition: 添付ファイルから送信されました filename パラメータと Content-Type なし: application/octet-stream, ブラウザを強制して、URL の末尾のインデックスセグメントにフォールバック 保...
Kubernetes のデプロイではなく、ジョブをビルドするスコープの concurrency
ワークフローレベルの並列化したパイプライン全体(kubectlを含む) ロールアウト)。 グループをビルドジョブに移動するだけなので、異なるジョブをデプロイする 実行は重複できます。 KlusterServices の infra ワークフローはワークフローの並列をドロップするので、 並列プッシュは、デプロイのみジョブ...
プライマリメールボックスが割り当てられ、変更、または削除されたときに、メンバーを同期します
メールボックスがKAMO MAIL orgのメンバーに割り当てられた場合、members.email 決して更新されず、EmailCredentialService が IMAP を解決できなかった 会員の資格情報.
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...
クラスCastException を防ぐため getMessage で IMAPInputStream を扱います
JavaMail は、デコードされた文字列の代わりに IMAPInputStream を返すことができます。 session.getContent() メッセージ内容があらかじめ取得されていない場合 ザ・オブ・ザ・ 直接(String)はparseMultipart()のthrew ClassCastException...
GetHasAttachments() を使用して、Boolean のラッパータイプにマッチします
****************は、ボオラン(ワラッパー)なので、ロボク isHasAttachments() ではなく getHasAttachments() を生成します。 後者のみ プリミティブボオランに存在します。 Boolean.TRUE.equals() を使用して安全にハンドルを処理します。 null の...
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...
送信先のアドレスオーバーライドのサポート
FromAddressRequest を emailSendRequest に追加して、フロントエンドを指定できます alias/shared/mailbox アドレスから送信する。 SmtpOnlyProvider リリース 現在、ヘッダのアドレスを継承し、 設定されていないときにプロバイダの設定メール.
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...
Email provider domains のデフォルトセットがない場合、org domains にフォールバック
KamoMailDomainValidatorは403のorgsのハード フェイリングで、 org domains の DNS-verified ドメインがメールに追加されていない プロバイダードメインレジストリ。 最初のアクティブを使用するフォールバックを追加します。 DNS 検証、トップレベルの org domai...
Kamo-shared-library update (remove OrganizationType, add isTopLevel) のリビルド
ステータスフィルタと自動シード必須テンプレートをリストにワイヤーアップ
- EメールTemplateController.list() は ?status= パラメータとフィルタを受け付けます。 既存のfindByOrgIdAndStatus リポジトリクエリを使用する - 初期のシーディングを見逃したorgsのオートシードに必要なテンプレート (seedForOrgIfMissing チ...
カモメールドメインバリデータを追加して、クロステナントメールアドレスをブロック
カモメールドメインValidatorコンポーネントを導入し、サービスレイヤーでチェックします。 送信されたメールドメインが org の検証済みのデフォルトドメインにマッチするかどうか カモメールがアクティブプロバイダーであるとき。 MailboxProvisioningService に注入される、 AliasServ...
Kamo-shared-library update (CREATE CHILD ORG right + application-to フラグ) のリビルド
新しい RoleRightType.CREATE CHILD ORG (id 131)、childOrgSecurityModel、13argサービス過負荷、2つの13argサービスオーバーロード、およびAppliedModelEnforcementService作成者タイプのヘルパー上の3つの適用toフラグをプルしま...
Kamo-shared-library update(appConfig upsert-only Fix)のリビルド
呼び出し元のペイロードからサービスタイプが不在であるappConfigの行を削除しなくなり、部分的なペイロードを受信したときにサイレントデータの損失を防ぐことができます.
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...