[RAPID-micro] 메일 작성 다이얼로그에 보내는 사람 계정 선택 추가

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-01 15:11:11 +09:00
parent 545b206f4c
commit a085b8149d
3 changed files with 96 additions and 21 deletions

View File

@@ -390,7 +390,28 @@ class UserMailImapService {
await client.logout();
return { success: true, message: 'IMAP 연결 성공' };
} catch (err) {
return { success: false, message: err instanceof Error ? err.message : '연결 실패' };
let message = '연결 실패';
if (err instanceof Error) {
const imapErr = err as any;
const raw = imapErr.response || imapErr.responseCode || imapErr.cause?.message || err.message;
const r = String(raw).toLowerCase();
if (r.includes('authentication') || r.includes('invalid credentials') || r.includes('authenticationfailed') || r.includes('login failed')) {
message = '인증 실패: 이메일 주소 또는 비밀번호가 올바르지 않습니다.';
} else if (r.includes('econnrefused') || r.includes('connection refused')) {
message = '연결 거부: 호스트 또는 포트를 확인하세요.';
} else if (r.includes('enotfound') || r.includes('getaddrinfo')) {
message = '호스트를 찾을 수 없습니다. IMAP 주소를 확인하세요.';
} else if (r.includes('timeout') || r.includes('etimedout')) {
message = '연결 시간 초과: 서버가 응답하지 않습니다.';
} else if (r.includes('self signed') || r.includes('certificate')) {
message = 'SSL 인증서 오류가 발생했습니다.';
} else if (r.includes('econnreset')) {
message = '연결이 강제로 끊겼습니다. TLS/SSL 설정을 확인하세요.';
} else {
message = raw;
}
}
return { success: false, message };
}
}
}