所有云端提供者的有线域名管理器和邮箱预览器
将每个云提供方的不支持操作排除根替换为 真实的 HTTP 调用每个后端的管理员 API : - Microsoft 365 — 微软图(/用户,/域,/核实,.) pro-org OAuth 访问符. - Google工作空间 – 管理 SDK目录 + 使用每个用户的站点验证 OAuth 访问符 。 - Zoho邮件...
IMAP/ SMTP 支持的发送、文件夹和云根搜索
将 IMAP/ SMTP 代表团模式摘录为 CratusImapBackedCloud Provider 还有Zoho, IceWarp, Exchange, Google 工作空间, 和Microsoft 365 扩展 这个 基础类执行 MailSender、MailReader、文件夹管理器和 在电子邮件Imap ...
IMAP 支持的提供云源根的邮件阅读器
Zoho, IceWarp, Exchange, Google 工作空间, 和Microsoft 365 都暴露了IMAP, 通过电子邮件ImapService 连接每个云端提供者的邮件读取器 而不是丢弃未支持的操作例外 。 这个: - 当只有IMAP的证书时,解除对这些提供者的读取信件的屏蔽 配置( 今天最常见的部...
服务内置图像 MIME 部件和表面内容ID元数据
在信件 UI 中通过曝光内含部分来渲染<img src='cid:...> HTML正文参考。 - 附件Info 增益内容Id(无角括号)和内置旗帜。 - 解析多相并获得相接共享 单相接部分上游 以及一个递归行走器, 所以内接部分 嵌入多部分/相关 采用两种方法(其指数保持不变)。 之前的重现过度重写了父附件列表,该...
在附件下载时保留原始文件名和内容类型
终点(均为个人) 和共享邮箱控制器) 没有文件名参数和内容类型:应用程序/octet-stream, 强制浏览器返回到 URL 的后端索引段 保存文件名 – 文件保存为"0","1"等,没有扩展名. 通过 getMessage () 查找匹配的附件信息并构建一个合适的 内容Disposition with UTF-8...
创造就业的货币范围,而不是部署Kubernetes
工作流量一级连通整条管道(包括克贝克特尔) (推出)。 将组移动到构建任务中, 只需从不同位置部署任务 运行可以重叠。 Kluster Services 工作流程下调工作流程货币 并行推动不排队于只部署的任务.
指定、更改或删除主邮箱时同步成员. email
当一个邮箱在 KAMO Mail org 中被指派给一个成员时, 成员. email 从未更新, 导致 EmailCreditience Service 无法解决 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...
处理 IMAP 输入到磁盘中以防止 ClassCast 例外
JavaMail 可以返回一个 IMAPInputStream 而不是从解码字符串 part.getContent () 当信件内容没有被预选时 。 这个 直接( String) 投放在 parse Multipart () 中 受影响的信件, 在读取标记前导致获取 FullMessage 失败 被调用,所以电子邮件从...
使用 etHasAttachments () 来匹配布尔包件类型
{\fn华文楷体\fs16\1cHE0E0E0}所以伦博克 生成获得 Hasattachments () 不是 Hasattachments () 。 仅限后者 存在于原始布尔。 使用 Boolean.TRUE.equals () 安全处理 无效的案例.
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...
发送时来自 Address 的支援
从地址请求添加到电子邮件发送请求, 这样前端可以指定 用于发送的别名/共享/邮件箱地址。 现在只提供 返回到 未设置时提供配置邮件 .
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...
当没有设置电子邮件 提供者 域名默认设置时, 返回到 org domains
KamoMailDoalidator对403只具有 org 域中的 DNS- 验证域, 但从未添加到电子邮件中 提供者域名登记。 添加一个使用第一个活动的后退, DNS- 已验证, 顶级的 org domain 这样, 类人可以创建信箱, 而无需 一个单独的域注册步骤.
连接状态过滤器和列表中所需的自动种子模板
- 电子邮件Template Control.list() 现在接受? status=param和过滤器 使用现有的 findByOrgIdAnd status 查询 - 需要为错过初始播种的兽人提供自动种子模板 (种子 ForOrg 如果错过检查 REQUIRED 计数,只有种子如果零) - 修补种子前创建鼠标时显示...
Add KamoMail domain validator to block cross-tenant email addresses
Introduces KamoMailDomainValidator component that checks, at service layer, whether the submitted email domain matches the org's verified default domain when Ka...
Rebuild for kamo-shared-library update (CREATE_CHILD_ORG right + apply-to flags)
Pulls the new RoleRightType.CREATE_CHILD_ORG (id 131), the three apply-to flags on ChildOrgSecurityModel, the two 13-arg service overloads, and the AppliedModel...
Rebuild for kamo-shared-library update (appConfig upsert-only fix)
Pulls the hardened **************** that no longer deletes appConfig rows whose service types are absent from the caller's payload — prevents silent data loss w...
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...
为服务到服务的终点添加内部AuthFilter
验证 / api/ 电子邮件/ templades/ send 和 上的 X- Internal- Auth 信头 /api/email/templades/种子-org/*路径. 绕过此过滤器的其他路径 (用户会话授权处理它们). 秘密来自INNALL AUTH SECRET (原始内容存档于2017-03-21)....
添加电子邮件TemplateCategory Services — CRUD 以表示覆盖的类别
在服务层强制执行的对大小写不敏感名称独有性 (比对DB中部分独有的索引). 删除无效类别 id 在删除类别行之前,先在受影响的模板上。 部分为SP1.
添加电子邮件模板服务 — CRUD + 发送+ 种子 + 重置到默认
交易邮件核心管弦乐手. 发送用户解析模板, 使对象/机构,从组织中选择该矿石的主要领域。 域,则 并用 NoReply- org. domain 的地址向 EmailSmtpService 移动。 包括种子ForOrg用于新更新的生命周期钩并重置 ToDefault 复制了系统列的内容,超过每行的 REQUIRED 。...
从地址添加“ noReply%%domain} ” 的无回放服务
地址交易邮件的单一真相来源 。 接受一个 域字符串,小写规范化,返回“Noply-%domain>”。 呼叫者必须解决 org 的域( 通过 Organization. domains 查看或 类似)并传入. 部分为SP1.
添加模板渲染器用于 QQVARQQ 替换
无国籍的regex制成器。 缺少 vars 替换空字符串和 发送带有模板Key + orgId的 WARN 日志进行归属 。 无 HTML 逃避 在 v1 中——值由服务器控制。 部分为SP1.
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...