Stop Hibernate манглинг «::» касты в родном SQL
Парсер родного запроса Hibernate рассматривает «::» как сбежавшую толстую кишку и пересылает сингл ":". CockroachDB получил **************** ARRAY[]:text[]), '...
Продолжайте перепроверку надежного потребителя NATS индексатора после развертывания
Подвижное развертывание перекрывает стручки, а исходящее все еще удерживает прочный Потребитель, поэтому входящий контейнер связывается с «email-metadata-indexe...
Адаптация индексаторов метаданных к колонкам типа массива
Изменения в библиотеке, которые отображают разговоры / Search index Колонки массивов как String[]/UUID[], а не List<T>, что и остановилось каждое проиндексирова...
Свяжите индекс объемной папки и остановите его на структурном отказе
Незавершенная работа с одновременным сеансом, пронесенная так, чтобы дерево было чистым. Массовый индекс шел по страницам с полными страницами, установленными ...
Никогда не противопоставляйте лидерство собственным адресам компании
Ведущий, чья электронная почта была настроена на noreply@kamocrm.com, соответствовал каждому сообщению, которое когда-либо отправленный адрес — один ведущий рек...
Страница свинцовой подметки, пока окно не будет закрыто
Одна фиксированная страница бесшумно теряла почту всякий раз, когда почтовый ящик брал больше, чем обычно. сообщения размером страницы между клещами — всплеск р...
Адресные ответы на Reply-To и прекращение утечки исключений SMTP в пользовательский интерфейс
Быстрый ответ на уведомление KamoCRM с ошибкой: Недействительные адреса переведено дословно в поле ответов. Эта строка - собственная формулировка почты Джакарты...
Прекратите классифицировать HTML-корень как вложение
Каждое транзакционное электронное письмо, которое мы отправляем со встроенным логотипом, пришло в наш собственный. /сообщения зрителя с правильным предметом и с...
Сканирование общих репозиториев MFA
MfaEnrollmentService - это @Service в библиотеке, разделенной Камо, так что Wildcard @ComponentScan("com.kamo") в этом приложении строит его независимо от того,...
Слить дубликат ключа kamo, который разрушил EmailService
Новый блок EmailService находится в CrashLoopBackOff с 16e8a05 — 22 перезапуска. Никогда не начинал. Змеямл поднимает DuplicateKeyException на повторном верхнем...
Укрепите загрузку kububl против шелушащегося выхода [skip ci]
dl.k8s.io по выходу бегуна периодически падает в середине передачи: Curl: (56) OpenSSL SSL read: расшифровка не удалась или не удалась который не справляется с ...
Добавить недостающие конечные точки CampaignController REST для /api/email/campaigns
Рабочее пространство/редактор для массовых сообщений GET/POST/api/email/campaigns и т.д. CampaignService (@Service) была когда-либо создана — ни один @RestContr...
Удалить неоднозначный запрос UnsubscribeMatcher, который разбил стартап
EmailService устанавливает два сервлета (MVC DispatcherServlet + Spring-WS) MessageDispatcherServlet at /services/*), поэтому запрос голой строки "/api/email/un...
Прекратите сериализацию вычисленного xoauth2 Getter, который сломал кэш MailCredentials Redis
MailCredentials кэшируется в Redis (GenericJackson2Json). Добавлено "isXoauth2()" Булевый геттер был сериализован как свойство «xoauth2», но не имеет поля для ч...
Сфера охвата почтового ящика / домена KamoMail для собственных доменов организации (перекрестная утечка)
БЕЗОПАСНОСТЬ: **************** Заголовок «Удачная электронная почта от виртуальных пользователей» (и ****************) «УДАЛЕНИЕ ИМЯ Виртуальных доменов» без оп...
Persist выбрал поставщика OAuth для обратного вызова, чтобы он перестал возвращаться в KamoMail
Переключение орга на Microsoft 365 (или Google Workspace / Zoho) никогда не застревал: обратный вызов OAuth хранил токены и переворачивал статус только на уже с...
Решите логотип приветственной почты от хоста темы org, а не apex
Логотипы заголовка / футера в системных электронных письмах (приветствие / проверка) были построены как **************** — высший путь, существующий только на К...
Постоянное сравнение секретов внутренней ауты (оракул времени)
Заменить String.equal на MessageDigest.isEqual, чтобы задержка ответа не могла X-Internal-Auth делится секретным байт за байтом. Широкий охват флота копировальн...
Возврат 422 (не 500), если у участника нет почтового ящика
файлы списков и другие прочитанные конечные точки выкинули из IllegalStateException MailContext.toMailCredentials(), когда у участника не было учетных данных IM...
Не сохраняйте транзакционные NoReply отправляет в папку Sent
NoReply - это адрес только для отправки, без почтового ящика, но с каждой транзакцией. Отправить все еще пытался приложение IMAP к папке Sent, производя шумный ...
Список почтовых ящиков API возвращает UI-образный ****************
GET/api/email/mailboxes вернула необработанную сущность (providerStatus, lastSyncedAt, Без учета членов. UI настроек читает **************** Статус всегда был н...
Разрешить привилегированный доступ к почтовому ящику для чтения + отправки
разрешает доступ только через прямое назначение MemberMailbox, Почтовые ящики всплывали через **************** Права бросил NoSuchElementException -> "Не удалос...
Сохранение оригинального имени файла и типа контента при загрузке вложения
**************** Конечные точки (как личные) и контроллеры с общим почтовым ящиком) выдавали Content-Disposition: вложение без параметра имени файла и Content-T...
Sync members.email, когда основной почтовый ящик назначен, изменен или удален
Когда почтовый ящик был назначен участнику в организации KAMO MAIL, участники.email Он никогда не обновлялся, в результате чего EmailCredentialService не смог р...
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...
Обработка IMAPInputStream в getMessage для предотвращения ClassCastException
JavaMail может вернуть IMAPInputStream вместо декодированной строки Part.getContent() - когда содержание сообщения не было предварительно придумано. The Прямые ...
Используйте getHasAttachments(), чтобы соответствовать типу булевой обертки
**************** — булева (обертка), так что Ломбок Привязка () не является привязкой (). Последний только Существует для примитивного булева. Используйте Boole...
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 override в отправке
Добавляет из AddressRequest в 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...
Возврат к org domains, когда не установлен по умолчанию email provider domains
KamoMailDomainValidator был неисправен с 403 для организаций, которые имеют DNS-верифицированный домен в org domains, но никогда не добавлял его в электронную п...
Revert replyTo change — smtpService.send принимает вложения, не отвечающие
Проводите фильтр состояния и автоматические шаблоны в списке
- EmailTemplateController.list() теперь принимает ?status= param и фильтры используя существующий запрос репозитория findByOrgIdAndStatus - Автосемена требовали...
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.
Переименовать почтовый ящикId→id и providerStatus→status в ответе списка почтовых ящиков
Выравнивайте имена полей с внешними ожиданиями для списков почтовых ящиков участников.
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...
Как вы видите судоходство?
Все это приходит в ваше рабочее пространство самостоятельно. Начните с бесплатного плана и прочитайте эту страницу через месяц.
