====== 메일솔루션 연동 인터페이스 ======
===== 개요 =====
메일 솔루션과의 연동을 위한 표준 인터페이스 기능을 수행한다. 전자우편을 자체적으로 발송하는 기능은 구성하지 않으며, 메일발송시스템에 XML형태로 전자우편 내용을 전송하고, 수신결과를 받아 내역관리를 할 수 있는 인터페이스를 지원하는 기능과 발송할 메일 내역을 관리하는 기능을 제공한다.
===== 설명 =====
==== 패키지 참조 관계 ====
메일연동 인터페이스 패키지는 요소기술의 공통(cmm) 패키지와 포맷/날짜/계산, 시스템 패키지에 대해서 직접적인 함수적 참조 관계를 가진다.
* 패키지 간 참조 관계 : [[egovframework:com:v2:init_pkg_dependency#사용자디렉토리/통합인증|사용자디렉토리/통합인증 Package Dependency]]
==== 관련소스 ====
=== 발송메일 내역조회 ===
^유형^대상소스명^비고^
|Controller|egovframework.com.cop.ems.web.EgovSndngMailDtlsController.java|발송메일 내역조회 관리 Controller Class|
|Service|egovframework.com.cop.ems.service.EgovSndngMailDtlsService.java|발송메일 내역조회 Service Class|
|ServiceImpl|egovframework.com.cop.ems.service.impl.EgovSndngMailDtlsServiceImpl.java|발송메일 내역조회ServiceImpl Class|
|Model|egovframework.com.cop.ems.service.SndngMail.java|발송메일 모델 Class|
|VO|egovframework.com.cop.ems.service.SndngMailVO.java|발송메일 VO Class|
|DAO|egovframework.com.cop.ems.service.impl.SndngMailDtlsDAO.java|발송메일 내역조회 Dao Class|
|JSP|/WEB-INF/jsp/egovframework/com/cop/ems/EgovMailDtls.jsp|발송메일 내역조회 페이지|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_mysql.xml|발송메일 내역조회 MySQL용 QUERY XML|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_cubrid.xml|발송메일 내역조회 Cubrid용 QUERY XML|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_oracle.xml|발송메일 내역조회 Oracle용 QUERY XML|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_tibero.xml|발송메일 내역조회 Tibero용 QUERY XML|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_altibase.xml|발송메일 내역조회 Altibase용 QUERY XML|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_maria.xml|발송메일 내역조회 MariaDB용 QUERY XML|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_postgres.xml|발송메일 내역조회 PostgreSQL용 QUERY XML|
|Validator Rule XML|resources/egovframework/validator/validator-rules.xml|Validator Rule을 정의한 XML|
|Validator XML|resources/egovframework/validator/com/cop/ems/EgovMailRegist.xml|메일솔루션 연동 인터페이스 Validator XML|
|Message properties|resources/egovframework/message/com/cop/ems/message_ko.properties|발송메일 내역조회를 위한 Message properties(한글)|
|Message properties|resources/egovframework/message/com/cop/ems/message_en.properties|발송메일 내역조회를 위한 Message properties(영문)|
|Message properties|resources/egovframework/message/com/message-common_ko.properties|공통 Message properties(한글)|
|Message properties|resources/egovframework/message/com/message-common_en.properties|공통 Message properties(영문)|
=== 발송메일 등록 ===
^유형^대상소스명^비고^
|Controller|egovframework.com.cop.ems.web.EgovSndngMailRegistController.java|발송메일 등록 관리 Controller Class|
|Service|egovframework.com.cop.ems.service.EgovSndngMailRegistService.java|발송메일 등록 관리 Service Class|
|ServiceImpl|egovframework.com.cop.ems.service.impl.EgovSndngMailRegistServiceImpl.java|발송메일 등록 관리 ServiceImpl Class|
|Model|egovframework.com.cop.ems.service.SndngMail.java|발송메일 모델 Class|
|VO|egovframework.com.cop.ems.service.SndngMailVO.java|발송메일 VO Class|
|VO|egovframework.com.cop.ems.service.AtchmnFileVO.java|발송메일에 첨부되는 파일 VO Class|
|DAO|egovframework.com.cop.ems.service.impl.SndngMailRegistDAO.java|발송메일 등록 Dao Class|
|JSP|/WEB-INF/jsp/egovframework/com/cop/ems/EgovMailRegist.jsp|발송메일 등록 페이지|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_mysql.xml|발송메일 등록 MySQL용 QUERY XML|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_cubrid.xml|발송메일 등록 Cubrid용 QUERY XML|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_oracle.xml|발송메일 등록 Oracle용 QUERY XML|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_tibero.xml|발송메일 등록 Tibero용 QUERY XML|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_altibase.xml|발송메일 등록 Altibase용 QUERY XML|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_maria.xml|발송메일 등록 MariaDB용 QUERY XML|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_postgres.xml|발송메일 등록 PostgreSQL용 QUERY XML|
|Validator Rule XML|resources/egovframework/validator/validator-rules.xml|Validator Rule을 정의한 XML|
|Validator XML|resources/egovframework/validator/com/cop/ems/EgovMailRegist.xml|메일솔루션 연동 인터페이스 Validator XML|
|Message properties|resources/egovframework/message/com/cop/ems/message_ko.properties|발송메일 내역조회를 위한 Message properties(한글)|
|Message properties|resources/egovframework/message/com/cop/ems/message_en.properties|발송메일 내역조회를 위한 Message properties(영문)|
|Idgen XML|resources/egovframework/spring/context-idgen.xml|발송메일 Id생성 Idgen XML|
=== 발송메일 상세조회 ===
^유형^대상소스명^비고^
|Controller|egovframework.com.cop.ems.web.EgovSndngMailDetailController.java|발송메일 상세조회 관리 Controller Class|
|Service|egovframework.com.cop.ems.service.EgovSndngMailDetailService.java|발송메일 상세조회 Service Class|
|Service|egovframework.com.cop.ems.service.EgovSndngMailService.java|메일 솔루션과 연동해서 이용해서 메일을 보내는 Service Class|
|ServiceImpl|egovframework.com.cop.ems.service.impl.EgovSndngMailDetailServiceImpl.java|발송메일 상세조회 ServiceImpl Class|
|ServiceImpl|egovframework.com.cop.ems.service.impl.EgovSndngMailServiceImpl.java|메일 솔루션과 연동해서 이용해서 메일을 보내는 ServiceImpl Class|
|Model|egovframework.com.cop.ems.service.SndngMail.java|발송메일 모델 Class|
|VO|egovframework.com.cop.ems.service.SndngMailVO.java|발송메일 VO Class|
|DAO|egovframework.com.cop.ems.service.impl.SndngMailDetailDAO.java|발송메일 상세조회 Dao Class|
|JSP|/WEB-INF/jsp/egovframework/com/cop/ems/EgovMailDetail.jsp|발송메일 상세조회 페이지|
|JSP|/WEB-INF/jsp/egovframework/com/cop/ems/EgovMailXml.jsp|발송요청메일 XML파일 페이지|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_mysql.xml|발송메일 상세조회 MySQL용 QUERY XML|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_cubrid.xml|발송메일 상세조회 Cubrid용 QUERY XML|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_oracle.xml|발송메일 상세조회 Oracle용 QUERY XML|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_tibero.xml|발송메일 상세조회 Tibero용 QUERY XML|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_altibase.xml|발송메일 상세조회 Altibase용 QUERY XML|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_maria.xml|발송메일 상세조회 MariaDB용 QUERY XML|
|QUERY XML|/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_postgres.xml|발송메일 상세조회 PostgreSQL용 QUERY XML|
|Validator Rule XML|resources/egovframework/validator/validator-rules.xml|Validator Rule을 정의한 XML|
|Validator XML|resources/egovframework/validator/com/cop/ems/EgovMailRegist.xml|메일솔루션 연동 인터페이스 Validator XML|
|Message properties|resources/egovframework/message/com/cop/ems/message_ko.properties|발송메일 내역조회를 위한 Message properties(한글)|
|Message properties|resources/egovframework/message/com/cop/ems/message_en.properties|발송메일 내역조회를 위한 Message properties(영문)|
==== 클래스 다이어그램 ====
=== 발송메일 내역조회 ===
{{:egovframework:com:v2:cop:발송메일내역_클래스다이어그램.jpg?740|}}
=== 발송메일 등록 ===
{{:egovframework:com:v2:cop:발송메일등록_클래스다이어그램.jpg?740|}}
=== 발송메일 상세조회 ===
{{:egovframework:com:v2:cop:발송메일상세조회_클래스다이어그램.jpg?740|}}
==== ID Generation ====
=== ID Generation 관련 DDL 및 DML ===
* ID Generation Service를 활용하기 위해서 Sequence 저장테이블인 COMTECOPSEQ에 **MAILMSG_ID** 항목을 추가해야 한다.
CREATE TABLE COMTECOPSEQ ( table_name varchar(16) NOT NULL,
next_id DECIMAL(30) NOT NULL,
PRIMARY KEY (table_name));
INSERT INTO COMTECOPSEQ VALUES('MAILMSG_ID','0');
=== ID Generation 환경설정(context-idgen.xml) ===
==== 관련테이블 ====
^테이블명^테이블명(영문)^비고^
|메일발신관리|COMTHEMAILDSPTCHMANAGE|메일발신을 관리한다.|
===== 관련기능 =====
메일솔루션 연동 인터페이스는 **발송메일 내역조회**, **발송메일 등록**, **발송메일 상세조회** 기능으로 구분되어 있다.
==== 발송메일 내역조회 ====
=== 비즈니스 규칙 ===
메일 솔루션을 통해 발송하기 위해 등록된 메일 목록을 조회하고, 삭제 처리할 수 있다.
=== 관련코드 ===
메일 목록에서 발송결과로 사용되는 코드 및 그에 따른 설정 값의 반영사항은 다음과 같다.
^코드분류^코드분류명^코드ID^코드명^
|COM024|발송결과구분|R|요청|
|COM024|발송결과구분|F|실패|
|COM024|발송결과구분|C|완료|
=== 관련화면 및 수행매뉴얼 ===
^Action^URL^Controller method^QueryID^
|메일목록조회|/ems/selectSndngMailList.do|selectSndngMailList|"SndngMailDtlsDAO.selectSndngMailList_D"|
| | | |"SndngMailDtlsDAO.selectSndngMailListTotCnt_S"|
제목/내용/보낸이 검색조건으로 발송메일 목록을 조회한다. \\
삭제할 메일들을 체크한 뒤 삭제한다. \\
{{:egovframework:com:v3.8:ems:sndngmail1.png|}}
검색조건 선택: 제목, 내용, 보낸이 검색조건을 선택한다. \\
검색어 입력: 선택한 검색조건에 맞게 검색어를 입력한다. \\
조회: 검색조건, 검색어에 부합되는 메일목록을 조회한다. \\
등록: 메일 등록 화면으로 들어간다. \\
삭제: 체크한 메일들을 삭제한다. \\
==== 발송메일 등록 ====
=== 비즈니스 규칙 ===
메일 솔루션을 통해 발송하기 위해 수신자, 제목, 첨부파일, 발신내용 정보를 입력하여 메일을 등록할 수 있다.
=== 관련코드 ===
메일 등록에서 발송결과로 사용되는 코드 및 그에 따른 설정 값의 반영사항은 다음과 같다.
^코드분류^코드분류명^코드ID^코드명^
|COM024|발송결과구분|R|요청|
|COM024|발송결과구분|F|실패|
|COM024|발송결과구분|C|완료|
=== 관련화면 및 수행매뉴얼 ===
^Action^URL^Controller method^QueryID^
|메일등록화면|/cop/ems/insertSndngMailView.do|insertSndngMailView| |
|메일등록|/cop/ems/insertSndngMail.do|insertSndngMail|"sndngMailRegistDAO.insertSndngMail"|
발신자, 수신자, 제목, 첨부파일, 발신내용 정보를 담은 메일을 등록한다. \\
{{:egovframework:com:v3.8:ems:sndngmail3.png|}}
받는 사람: 수신자의 E-Mail 주소를 입력한다. \\
제목: 메일 제목을 입력한다. \\
파일첨부: 메일에 첨부할 파일을 하나씩 추가한다. \\
발신내용: 메일의 내용을 HTML 또는 텍스트 형태로 입력한다. \\
뒤로: 메일 내역조회 화면으로 돌아간다. \\
등록: 메일을 등록하고 발송요청 한다. \\
==== 발송메일 상세 조회 ====
=== 비즈니스 규칙 ===
메일 솔루션을 통해 발송하기 위해 등록된 메일 정보를 상세 조회하고, 삭제 처리할 수 있다.
=== 관련코드 ===
N/A
=== 관련화면 및 수행매뉴얼 ===
^Action^URL^Controller method^QueryID^
|메일상세조회|/cop/ems/selectSndngMailDetail.do|selectSndngMail|"sndngMailDetailDAO.selectSndngMail"|
|발송메일삭제|/cop/ems/deleteSndngMail.do|deleteSndngMail|"sndngMailDetailDAO.deleteSndngMail"|
|첨부파일삭제|/cop/ems/deleteSndngMail.do|deleteSndngMail|"sndngMailDetailDAO.deleteAtchmnFileList"|
발신자, 수신자, 제목, 내용, 발송결과, XML파일내용보기, 첨부파일 정보를 조회한다. \\
조회한 메일을 삭제한다. \\
{{:egovframework:com:ems:sndngmail2.jpg|}}
XML메일보기: 발송요청을 위해 생성된 XML형태의 파일 내용을 조회한다. \\
첨부파일: 메일에 첨부된 파일을 열거나 저장한다. \\
뒤로: 발송메일 목록 조회 화면으로 돌아간다. \\
삭제: 조회된 메일 정보 및 관련 XML파일, 첨부파일을 모두 삭제한다. \\
==== 일반용 및 첨부파일 미사용 발송메일 구현 예제 ====
=== 관련코드 ===
* context-mail.xml 내용 수정
true
true
true
* 메일 발송하는 메서드 구현
package egovframework.com.cop.ems.service.impl;
@Service("egovSndngMailService")
public class EgovSndngMailServiceImpl extends AbstractServiceImpl implements EgovSndngMailService {
// 첨부파일 미사용시
@Resource(name="EMSMailSender")
private MailSender emsMailSender;
public boolean sndngMail(SndngMailVO sndngMailVO) throws Exception {
String recptnPerson = (sndngMailVO.getRecptnPerson() == null) ? "" : sndngMailVO.getRecptnPerson(); // 수신자
String subject = (sndngMailVO.getSj() == null) ? "" : sndngMailVO.getSj(); // 메일제목
String emailCn = (sndngMailVO.getEmailCn() == null) ? "" : sndngMailVO.getEmailCn(); // 메일내용
SimpleMailMessage msg = new SimpleMailMessage();
msg.setTo(recptnPerson);
msg.setSubject(subject);
msg.setText(emailCn);
emsMailSender.send(msg);
}