# NAVER WORKS Mail API "Mail does not exist" 오류 - mailAddress 필드 null 문제 ## 날짜: 2025-09-18 ## 작성자: Claude (51123 서버 관리자) ## 관련 서비스: auth-server, skill-naverworks (예정) ## 상태: ✅ 해결됨 (2025-09-18 20:15) --- ## 1. 문제 상황 요약 ### 발견된 문제 - **Mail API 호출 실패**: "Mail does not exist" 오류 발생 - **Directory API 응답 이상**: mailAddress 필드가 null - **웹메일은 정상 작동**: 18GB/100GB 사용 중으로 메일 서비스는 활성화됨 - **OAuth 토큰 정상**: mail scope 포함되어 있음 ### 영향 범위 - info@company-x.partners 계정 Mail API 접근 불가 - 메일 자동화 기능 구현 차단 - skill-naverworks 서비스 개발 지연 --- ## 2. 기술적 상세 정보 ### 2.1 계정 정보 ``` User ID: 795cf95e-396b-42d0-16f0-0323ee92a179 OAuth User ID: 3550cef6-63e1-4ceb-8802-a25c9d1c6917 Email: info@company-x.partners Domain ID: 155032 플랜: Standard ``` ### 2.2 API 호출 실패 케이스 #### Mail API 요청 ``` GET https://www.worksapis.com/v1.0/users/795cf95e-396b-42d0-16f0-0323ee92a179/mail/messages?folderId=INBOX&limit=1 Authorization: Bearer kr1AAABAaxRvBHczSOI8fT5gTg6QsK... ``` #### 응답 (오류) ```json { "code": "NOT_FOUND", "description": "Mail does not exist." } ``` ### 2.3 Directory API 응답 분석 #### 동일 토큰으로 Directory API 호출 ``` GET https://www.worksapis.com/v1.0/users/795cf95e-396b-42d0-16f0-0323ee92a179 ``` #### 응답 (문제 확인) ```json { "userId": "795cf95e-396b-42d0-16f0-0323ee92a179", "email": "info@company-x.partners", "mailAddress": null, // ← 문제의 핵심 "primaryEmail": null, // ← 이것도 null "userName": { "firstName": "X", "lastName": "COMPANY" } } ``` --- ## 3. 시도한 해결 방법 (모두 실패) ### 3.1 권한 세트 재설정 - Admin 콘솔에서 권한 그룹 재할당 - mail 권한 명시적 부여 - 결과: 변화 없음 ### 3.2 메일 별칭 추가/삭제 - 별칭 추가 시도 - 기존 별칭 삭제 후 재생성 - 결과: mailAddress 여전히 null ### 3.3 메일 서비스 재활성화 - 서비스 비활성화 → 활성화 - MX 레코드 재확인 - 결과: 웹메일은 작동하나 API는 실패 --- ## 4. 네이버웍스 지원팀 답변 분석 ### 4.1 첫 번째 답변 요약 - Directory API는 구성원 관련 API - 구성원 추가 시 email 파라미터 필수 (ID@Domain 형식) - JWT(서비스 계정)로는 mail scope 사용 불가 ### 4.2 답변의 한계 - **기존 계정의 mailAddress 수정 방법 언급 없음** - **Admin 권한으로도 수정 불가능한 이유 설명 없음** - **웹메일 정상 작동과 API 실패의 불일치 원인 미설명** --- ## 5. 추정 원인 분석 ### 5.1 계정 생성 시점 문제 - 구 버전 API로 생성된 계정일 가능성 - 메일 서비스 활성화 이전 생성 계정 - Directory와 Mail 서비스 간 동기화 누락 ### 5.2 시스템 불일치 - Directory DB와 Mail DB 간 데이터 불일치 - mailAddress 필드 마이그레이션 누락 - 내부 시스템 간 동기화 실패 --- ## 6. 해결 방안 (요청 사항) ### 6.1 네이버웍스 지원팀 추가 요청 1. **mailAddress 필드 수동 설정 방법** 2. **Directory와 Mail 서비스 간 강제 동기화** 3. **계정 재생성 없이 해결 가능 여부** 4. **API 콘솔에서 디버깅 도구 제공 여부** ### 6.2 임시 해결책 검토 - 새 계정 생성 후 데이터 마이그레이션 - Service Account 활용 검토 (OAuth 제약 회피) - 웹메일 크롤링 (최후의 수단) --- ## 7. 관련 문서 및 참고사항 - NAVER WORKS Developers: https://developers.worksmobile.com - Mail API 문서: https://developers.worksmobile.com/kr/reference/mail-message-list - Directory API 문서: https://developers.worksmobile.com/kr/reference/directory-user-get ## 8. 해결 완료 (2025-09-18 20:15) ### 8.1 문제 원인 - **잘못된 API 엔드포인트 사용**: `/mail/messages` (존재하지 않음) - **올바른 엔드포인트**: `/mail/mailfolders/{folderId}/children` ### 8.2 해결 방법 ```bash # 잘못된 방식 (404 오류) GET /v1.0/users/{userId}/mail/messages?folderId=INBOX # 올바른 방식 (200 성공) GET /v1.0/users/{userId}/mail/mailfolders/0/children?limit=3 # folderId=0은 받은메일함 Note: 목록 API는 날짜 파라미터(startSearchDate 등)를 지원하지 않으므로, 기간 제한은 응답의 receivedTime을 기준으로 클라이언트에서 필터링합니다. ``` ### 8.3 테스트 결과 - ✅ 메일 폴더 목록 조회 성공 (25개 폴더) - ✅ 받은메일함 9,192개 메일 확인 - ✅ 메일 제목, 발신자 정보 정상 조회 - ✅ **mailAddress가 null이어도 Mail API 정상 작동** ### 8.4 네이버웍스 지원팀 회신 예정 - 올바른 엔드포인트 사용으로 문제 해결됨 - mailAddress null은 API 사용에 영향 없음 확인 ## 9. 다음 단계 1. **skill-naverworks 서비스 개발 재개** 2. **메일 요약 기능 구현** 3. **Slack 연동 테스트**