88 lines
3.0 KiB
Plaintext
88 lines
3.0 KiB
Plaintext
= 메일 상태 조회
|
|
|
|
== 개요
|
|
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<String> 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<String, Object> getSentMail(String mailId) {
|
|
Map<String, Object> rtnMap = new HashMap<>();
|
|
MailStatus mailStatus = new MailStatus();
|
|
List<Recipient> recipientList;
|
|
|
|
List<String> 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 수신인 별 메일 수신 상황 조회
|