====== 메일솔루션 연동 인터페이스 ====== ===== 개요 ===== 메일 솔루션과의 연동을 위한 표준 인터페이스 기능을 수행한다. 전자우편을 자체적으로 발송하는 기능은 구성하지 않으며, 메일발송시스템에 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.9: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.9: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); }