Hibernate를 중지 "::" 기본 SQL에서 캐스팅
Hibernate의 네이티브 query parser는 탈출 된 식민지로 "::"를 치료하고 앞으로 단 하나 ":". CockroachDB 수신 *********** ARRAY[]:text[]), '' and rejected it with: at or near ":": 구문 오류. 문...
배포 후 Indexer의 튼튼한 NATS 소비자를 다시 시도하십시오
롤링 배포 overlaps pods 및 outgoing 하나 여전히 내구성을 보유 소비자, "email-metadata-indexer"에 들어오는 포드의 결합은 실패 [SUB-90012] 소비자는 이미 구독에 바인딩됩니다. 시작() 한 번에서 @PostConstruct, 오류를 기록하고...
Metadata indexers를 배열 형 칼럼에 적응
Kamo-shared-library를 따라 지도 대화/search index string[]/UUID[]와 같은 배열 열은 List<T>보다 멈춘다. 모든 색인 된 메시지는 모두 작성되었습니다. null이 현재 명시될 수 있는 열을 읽으십시오: toSet/toArray는 빈을 반환합니...
대량 폴더 인덱스를 경계하고 구조적 실패에 중지
동시 세션에서 드문 작업, 그래서 나무가 깨끗합니다. integer로 설정된 TotalPages를 가진 대량 색인 도보된 페이지. MAX VALUE 및 없음 천장, so the folder that paging misbehaved were walk forever. 지금 그만 페이지의 ...
회사의 자신의 주소에 대한 납을 일치하지 마십시오
이메일이 noreply@kamocrm.com으로 설정된 리드 주소가 전송되었습니다. 1 개의 리드 레코드가 회사의 전체 아웃바운드 표면 메일 스트림 (126 협회 6 생산에 리드). 2개의 결함, 둘 다 여기에서 닫힙니다. 해결자는 "이 회사는?" email provider doma...
창이 덮여 때까지 리드 스윕을 페이지
Mailbox가 더 많은 것을 가지고 있을 때마다 단 하나 고정 페이지 침묵으로 잃어버린 우편물 ticks 사이의 pageSize 메시지 - 뉴스 레터 파열, 바쁜 공유 inbox, 또는 Active mailbox의 첫 번째 청소 - 영구적으로 손실, 때문에 max-pages 그래서 ...
주소 응답에 응답하고, SMTP 예외를 UI로 유출
KamoCRM 알림에 대한 빠른 답변은 `{"error":"Invalid Addresses"}`로 실패했습니다. 응답 상자에 있는 verbatim를 렌더링했습니다. 그 문자열은 Jakarta Mail의 자신의 wording입니다. 사이트맵 To; pod log는 숨겨지은 것을 보여줍니다...
첨부 파일로 multipart/related HTML root 분류
모든 거래 이메일 우리는 인라인 org 로고로 보내 우리의 자신에 도착 /messages viewer 와 a 정확한 주제 과 완전한 빈 몸. isAttachmentPart()는 첨부 파일로 Content-ID를 운반하는 ANY 부품을 처리했습니다. 더 보기 multipart/relat...
공유 MFA 저장소 스캔
MfaEnrollmentService는 kamo-shared-library의 @서비스이므로 와일드 카드 @ComponentScan("com.kamo") 이 응용 프로그램에서 여부 또는 이지 여부를 구성 서비스는 MFA와 함께해야 할 일이 있습니다. — 그리고 그것의 constructor...
이메일서비스를 추락한 kamo 열쇠
새로운 EmailService pod는 16e8a05 이후 CrashLoopBackOff에있었습니다. - 22 재시작, 한번 시작하세요. snakeyaml는 반복된 최고 수준에 DuplicateKeyException을 올립니다 키, 나는 두 번째 `kamo를 추가 :`는 sender-a...
Flaky egress에 대한 kubectl 다운로드를 Harden [skip ci]
dl.k8s.io 런너의 egress 간에 실수로 중간 전송을 삭제: 컬: (56) OpenSSL SSL read: 해독 실패 또는 나쁜 기록 맥 그렇지 않으면 녹색 빌드에 배포되지 않습니다. 반복적으로 관찰 kamo-signer-monorepo 및 카모 번역 사전. 추가 --retr...
/api/email/campaigns에 대한 누락된 CampaignController REST 엔드포인트 추가
Bulk-email workspace/editor 호출 GET/POST /api/email/campaigns 등, 뿐만 아니라 CampaignService ( @Service)가 생성되었습니다. - @RestController가 노출되지 않았습니다. 그래서 모든 호출 404'd 및 /m...
자주 묻는 질문(FAQ)
이메일서비스는 2개의 servlets (MVC DispatcherServlet + Spring-WS를 거치합니다 MessageDispatcherServlet 에 /services/*), 그래서 베어 문자열 requestMatchers( "/api/email/unsubscribe/**")...
MailCredentials Redis 캐시를 깨진 xoauth2 getter를 직렬화
MailCredentials는 Redis (GenericJackson2Json)에서 캐시됩니다. 추가 `isXoauth2()` boolean getter는 "xoauth2"로 일련되었지만 필드가 없습니다. 다시, 그래서 모든 캐시 인식 읽기 threw 인식되지 않음PropertyExce...
Scope KamoMail mailbox/domain listing to the org's own domain (크로스텐트 누출)
보안: **************** ran ' 가상 users'에서 직접 이메일 (그리고 *********** 'SELECT name from virtual domains') with no org scoping, so mailbox/domain sync import EVERY org'...
콜백에 OAuth 공급자를 선택하여 KamoMail으로 돌아갑니다
Microsoft 365 (또는 Google Workspace / Zoho)에 org를 전환하지 못했습니다. OAuth 콜백은 토큰을 저장하고 사전 승인 공급자 행에 만 담긴 상태 만 허용되지 않습니다. 공급자 type 및 no-op'ing을 완전히 작성하지 않았습니다. 읽는 경로는 하...
Org 테마 호스트의 환영 이메일 로고를 해결, apex하지
시스템 이메일 (welcome/verification)에 있는 우두머리/footer 로고는 건축되었습니다 *********** — Kamo에서만 존재하는 apex 경로 마케팅 사이트, 그래서 고객 orgs (e.g. optionone.com) 모두 이미지 404 및 이메일은 로고가 없습...
일정한 내부auth 비밀 비교 (timing oracle)
MessageDigest.isEqual로 String.equals를 대체하십시오 그래서 응답 대기시간은 할 수 없습니다 X-Internal-Auth 공유 비밀 바이트-by-byte를 누출하십시오. Fleet-wide 청소의 copy-pasted InternalAuthFilter (sam...
반환 422 (500) 회원이 사서함이없는 경우
listFolders 및 기타 읽기 엔드 포인트 threw IllegalStateException from MailContext.toMailCredentials() 회원이 IMAP 자격 증명이 없을 때 컨트롤러의 catch-all이 500으로 바뀌는 것을 규정했습니다. 기타 제품 Mai...
거래 NoReply를 저장하지 마십시오
NoReply는 mailbox가없는 send-only 주소이지만, 모든 거래 여전히 IMAP append를 Sent 폴더에 보내면 noisy를 생성 각 전송에 AUTHENTICATIONFAILED 경고. saveToSent 플래그 추가 EmailSmtpService.send (실제 ma...
Mailbox 목록 API 반환 UI 모양 ****************
GET /api/email/mailboxes는 raw entity (providerStatus, lastSyncedAt를 반환합니다. 회원 수 없음. 설정 UI는 ***********를 읽습니다. 상태는 항상 정의되지 않았고 모든 mailbox는 "pending"으로 렌더링되었습니다. ...
Read + send-as에 대한 권한 기반 mailbox 액세스 권한을 부여
resolveForMailbox는 직접 MemberMailbox 할당을 통해만 액세스 권한을 부여합니다. 이렇게 mailboxes는 ***********를 통해서 지상에 놓았습니다 권리 threw NoSuchElementException -> "메시지로드" -********** 자주하...
첨부 파일 다운로드에 원본 파일명 및 내용 유형 보존
*********** endpoints (개인의 것 and shared-mailbox controllers)는 Content-Disposition를 방출하고 있었습니다: 부착 filename 매개 변수와 Content-Type: application/octet-stream, 브라우저가 ...
Sync member.email when primary mailbox는 할당, 변경, 또는 제거
Mailbox가 KAMO MAIL org의 회원으로 할당되었을 때, member.email 이메일CredentialService가 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...
ClassCastException을 방지하기 위해 getMessage에서 IMAPInputStream 처리
JavaMail 대신 IMAPInputStream을 반환할 수 있습니다. part.getContent() 메시지 내용이 예쁘지 않은 경우. 더 보기 직접 (String)는 parseMultipart () threw ClassCastException에 캐스팅 영향을받는 메시지, fetch...
사용 getHasAttachments() Boolean 래퍼 유형 일치
***********는 Boolean (wrapper), 그래서 Lombok입니다 getHasAttachments()를 생성합니다. 후자의 만 primitive boolean에 대한 존재. 안전하게 취급하기 위하여 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...
Send에 지원 fromAddress override
Adds FromAddressRequest to 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...
이메일 provider domains 기본 설정이 없는 경우 org domains로 돌아가기
KamoMailDomainValidator는 403 의 orgs에 대 한 어려운 실패 org domains의 DNS 인증 도메인은 아니지만 이메일에 추가하지 않습니다. 공급자 도메인 등록. 첫 번째 활성을 사용하는 fallback을 추가하십시오. DNS 인증, 최고 수준의 org dom...
상태 필터 및 목록에 자동 입력된 필수 템플릿
- EmailTemplateController.list()는 이제 ?status= param 및 필터를 허용합니다. 기존 findByOrgIdAndStatus 저장소 쿼리 사용 - 초기 묘목을 놓은 orgs에 대한 Auto-seeds 필수 템플릿 (seedForOrgIfMisssing ...
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.
MailboxId→id와 공급자Status→status를 우편함 명부 응답에 지명하십시오
Align 필드 이름 회원 mailbox 목록에 대한 기대.
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...
