= 메일 상태 조회 == 개요 Knox REST 메일수신상황조회 API와 연계하여 발신한 메일의 상태를 조회할 수 있다. === Knox메일 연계 설정 Knox REST 메일수신상황조회를 위해서는 Knox메일 연계 설정이 되어 있어야 한다. + Knox메일 연계 설정은 <<_메일,메일>> 항목의 <<_knox메일_연계_설정,Knox메일 연계 설정>> 항목을 참조한다. === 메일별 수신 상황 카운트 조회 발신한 메일의 메일 아이디값을 이용하여 발신한 메일을 수신한 수신자들의 개봉상태를 요약한 카운트 정보조회 Service:: KnoxMailService Method:: + [source,java] ---- /** * Knox 메일별 수신상태 조회 * @param mailIds Knox 메일 아이디 리스트 * @param sendMail 메일 정보 * @return Knox 메일 상태 */ MailStatus[] getDeliveryStatusCount(List mailIds, SendMail sendMail); ---- * SendMail 객체에 senderId (발신자 EP ID) 값 설정 필수 === 수신인 별 수신 상황 조회 발신한 메일의 메일 아이디값을 이용하여 발신한 메일의 수신자 별 수신 상태 정보를 조회 Service:: KnoxMailService Method:: + [source,java] ---- /** * Knox 메일 수신인별 수신상태 조회 * @param mailId Knox 메일 아이디 * @param sendMail 메일 정보 * @return Knox 메일 수신인별 수신상태 정보 */ Recipient[] getDeliveryStatus(String mailId, SendMail sendMail); ---- * SendMail 객체에 senderId (발신자 EP ID) 값 설정 필수 === 사용 예 .SentMailHistoryServiceImpl [source,java] ---- @Override public Map getSentMail(String mailId) { Map rtnMap = new HashMap<>(); MailStatus mailStatus = new MailStatus(); List recipientList; List mailIds = new ArrayList<>(); mailIds.add(mailId); SendMail sendMail = sentMailHistoryDao.getSentMail(mailId); try { // 14일 이전 문서는 Knox에서 조회 mailStatus = knoxMailService.getDeliveryStatusCount(mailIds, sendMail)[0]; // <1> recipientList = Arrays.asList(knoxMailService.getDeliveryStatus(mailId, sendMail)); // <2> if (ObjectUtils.isNotEmpty(recipientList)) { // 메일 수신 상태 동기화 updateRecipient(mailId, recipientList); } else { recipientList = sentMailHistoryDao.getRecipientList(mailId); } } catch (Exception ex) { log.error(ex.getMessage()); //Knox 에서 메일을 조회 할수 없을 경우, 14일이 경과 되었거나 Mail Box를 못찾을 경우 recipientList = sentMailHistoryDao.getRecipientList(mailId); } rtnMap.put("mailStatus", mailStatus); rtnMap.put("recipientList", recipientList); rtnMap.put("sendMail", sendMail); return rtnMap; } ---- <1> Knox 메일별 수신자들의 개봉상태 카운트 조회 <2> Knox 수신인 별 메일 수신 상황 조회