File name
Commit message
Commit date
2024-09-10
File name
Commit message
Commit date
2024-09-10
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package itn.let.utl.user.service;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.validator.routines.EmailValidator;
import org.springframework.stereotype.Service;
import egovframework.rte.psl.dataaccess.util.EgovMap;
import itn.let.cop.bbs.service.BoardMasterVO;
import itn.let.cop.bbs.service.EgovBBSAttributeManageService;
import itn.let.mjo.msg.service.MjonMsgService;
import itn.let.mjo.msg.service.MjonMsgVO;
import itn.let.mjo.msgdata.service.MjonMsgDataService;
import itn.let.mjo.msgdata.service.MjonMsgReturnVO;
import itn.let.sym.site.service.EgovSiteManagerService;
import itn.let.sym.site.service.TermsVO;
import itn.let.uat.uia.web.EmailVO;
import itn.let.uat.uia.web.SendLogVO;
import itn.let.uat.uia.web.SendMail;
import itn.let.uss.umt.service.EgovMberManageService;
import itn.let.uss.umt.service.EgovUserManageService;
import itn.let.uss.umt.service.UserDefaultVO;
/**
*
* 알림 전송 기능에 대한 Util 클래스
* @author 사업기술본부 원영현(ITN)
* @since 2022.07.12
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2022.07.12 원영현 최초 생성 *
*
* </pre>
*/
@Service("mjonNoticeSendUtil")
public class MjonNoticeSendUtil {
/** userManageService */
@Resource(name = "userManageService")
private EgovUserManageService userManageService;
@Resource(name = "MjonMsgDataService")
private MjonMsgDataService mjonMsgDataService;
@Resource(name = "EgovBBSAttributeManageService")
private EgovBBSAttributeManageService bbsAttrbService;
@Resource(name = "mjonMsgService")
private MjonMsgService mjonMsgService;
/** mberManageService */
@Resource(name = "mberManageService")
private EgovMberManageService mberManageService;
@Resource(name = "egovSiteManagerService")
EgovSiteManagerService egovSiteManagerService;
/**
* @Method Name : mjonInquiryNoticeSend
* @작성일 : 2022. 7. 12.
* @작성자 : WYH
* @Method 설명 : 문의사항 알림전송( bbsId : 게시판 ID, nttSj : 문의 글 제목, nttCn : 문의 글 내용 )
*/
public void mjonInquiryNoticeSend(String bbsId, String nttSj, String nttCn) throws Exception{
EmailVO mailSender = new EmailVO();
// 이메일 발송 내용
String contents = "";
contents += "<!DOCTYPE html>";
contents += "<html lang=\"ko\">";
contents += "<head>";
contents += "<meta charset=\"UTF-8\">";
contents += "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">";
contents += "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">";
contents += "<title>대량문자 발송 사이트 문자온 안내 메일 입니다.</title>";
contents += "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">";
contents += "<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>";
contents += "<link href=\"https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&display=swap\" rel=\"stylesheet\">";
contents += "</head>";
contents += "";
contents += "<body>";
contents += "<div class=\"wrap\" style=\"width: 100%; height: 100%; background-color: #e3e8f0; padding: 70px 0;\">";
contents += "<div class=\"box\" style=\"max-width: 700px; width: 98%; background-color: #fff; box-shadow: 0 0 5px rgba(0,0,0,0.2); border-radius: 20px; overflow: hidden; margin: 0 auto;\">";
contents += "<div class=\"area_top\" style=\"background-color: #2e5ac8; width: 100%; height: 80px; padding: 0 40px; box-sizing: border-box;\">";
contents += "<p style=\"display:inline-block; color: #fff; font-size: 24px; margin: 0; font-family: 'Noto Sans KR', sans-serif; line-height: 80px;\">";
contents += "<span style=\"font-weight: 600;\">문자온 안내</span> 메일입니다.</p> <a href=\"http://www.munjaon.co.kr\" target='_blank' style='text-decoration:none'><img src=\"http://www.munjaon.co.kr/publish/images/emailForm/top_logo.png\" alt=\"\" style=\"width: 94px; height: 53px; float: right; margin-top: 12px; vertical-align:top;\"></a>";
contents += "</div>";
contents += "<div class=\"area_content\" style=\"padding: 6%;\">";
contents += "<p style=\"font-size: 18px; letter-spacing: -0.5px; line-height: 1.5; color: #222; margin: 0; font-weight: 400; font-family: 'Noto Sans KR', sans-serif;\">";
contents += "안녕하세요. 대량문자 발송 사이트 문자온입니다.<br></p>";
contents += "<p class=\"area_num\" style=\"background-color: #f3f4f5; width: 100%; font-family: 'Noto Sans KR', sans-serif; font-size: 21px; font-weight: 600; box-sizing: border-box; border-radius: 1px; letter-spacing: -0.5px; padding: 8px 30px; margin: 20px 0;\">%emailContents%</p>";
contents += "<div class=\"info_mail\" style=\"width: 100%; border-top: 1px solid #d5d5d5; margin-top: 20px;\">";
contents += "<p style=\"font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">본 메일은 <span style=\"font-weight: 500;\">발신전용</span>이며, 문의에 대한 회신은 처리되지 않습니다. 문자온 관련하여 궁금하신 점이나 불편한 사항은 <span style=\"font-weight: 500;\">고객센터</span>를 통해 문의하여 주시기 바랍니다.</p>";
contents += "<p style=\"margin-top: 20px; font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">주소 : (12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스) <br> 사업자 번호 : 653-87-00858 | 대표 : 유인식 | 통신판매등록번호 : 제 2021-다산-0422 <br> 문의전화 : 1551-8011 | E-mail : help@iten.co.kr</p>";
contents += "<p style=\"margin-top: 20px; font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">Copyright 2020 ⓒ MUNJAON co. Ltd, All rights reserved.</p>";
contents += "</div>";
contents += "</div>";
contents += "</div>";
contents += "</div>";
contents += "</body>";
contents += "";
contents += "</html>";
String repContents = contents;
mailSender.setContents(nttCn);
String emailCont = mailSender.getContents().replace("\r\n", "<br/>");//줄바꿈 변환해주기
repContents = repContents.replace("%emailContents%", emailCont);
/*SimpleDateFormat format = new SimpleDateFormat("yyyy년 MM월 dd일 HH시 mm분");
Date nowdate = new Date();
String date = format.format(nowdate);
repContents = repContents.replace("%date%", date);*/
// 이메일로 보내기
SendMail sMail = new SendMail();
// 사용자 이메일 주소
mailSender.setSend_from("noreply@munjaon.co.kr");
String emailTitle = "";
//묻고답하기의 게시판들 가져오기
BoardMasterVO tempBoardMasterVO = new BoardMasterVO();
tempBoardMasterVO.setUrl("/web/cop/bbs/QnaList.do");
List<BoardMasterVO> boardMenuList = bbsAttrbService.selectBBSMenuByUrl(tempBoardMasterVO);
for(int i=0; i < boardMenuList.size(); i++) {
if(boardMenuList.get(i).getBbsId().equals(bbsId)) {
emailTitle = "[문자온] 1:1 문의 - ("+boardMenuList.get(i).getBbsNm()+") "+nttSj;
break;
}
}
// 메일 제목
mailSender.setTitle(emailTitle);
// 메일 내용
mailSender.setContents(repContents);
// cs 담당자 메일전송 여부 목록 조회
UserDefaultVO userSearchVO = new UserDefaultVO();
userSearchVO.setAuthorCode("ROLE_CS");
userSearchVO.setRecordCountPerPage(100000);
userSearchVO.setFirstIndex(0);
List<?> resultList = userManageService.selectUserList(userSearchVO) ;
for(int i=0; i < resultList.size(); i++) {
if("Y".equals(((EgovMap)resultList.get(i)).get("emailSendYN"))) {
String sandEmailAdres = "";
sandEmailAdres = (String)((EgovMap)resultList.get(i)).get("emailAdres");
// 발송자 이메일 주소
mailSender.setSend_to(sandEmailAdres);
// 메일 발송하기
sMail.sendMail2(mailSender);
//발송 이력 저장 로그
sendLogInsert("", "2" ,mailSender.getSend_from() ,mailSender.getSend_to(), repContents);
}
}
}
/**
* @Method Name : csAdminEmailNoticeSend
* @작성일 : 2022. 7. 12.
* @작성자 : WYH
* @수정일 : 2022. 7. 14.
* @작성자 : JSP
* @Method 설명 : CS관리자 이메일 알림전송( mberNm : 기업명, mberId : 가입아이디 , title : 이메일 제목)
*/
public void csAdminEmailNoticeSend(String mberNm, String mberId, String title) throws Exception{
try {
EmailVO mailSender = new EmailVO();
// 이메일 발송 내용 [ 시작 ]
String contents = "";
contents += "<!DOCTYPE html>";
contents += "<html lang=\"ko\">";
contents += "<head>";
contents += "<meta charset=\"UTF-8\">";
contents += "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">";
contents += "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">";
contents += "<title>대량문자 발송 사이트 문자온 안내 메일 입니다.</title>";
contents += "<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">";
contents += "<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>";
contents += "<link href=\"https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&display=swap\" rel=\"stylesheet\">";
contents += "</head>";
contents += "";
contents += "<body>";
contents += "<div class=\"wrap\" style=\"width: 100%; height: 100%; background-color: #e3e8f0; padding: 70px 0;\">";
contents += "<div class=\"box\" style=\"max-width: 700px; width: 98%; background-color: #fff; box-shadow: 0 0 5px rgba(0,0,0,0.2); border-radius: 20px; overflow: hidden; margin: 0 auto;\">";
contents += "<div class=\"area_top\" style=\"background-color: #2e5ac8; width: 100%; height: 80px; padding: 0 40px; box-sizing: border-box;\">";
contents += "<p style=\"display:inline-block; color: #fff; font-size: 24px; margin: 0; font-family: 'Noto Sans KR', sans-serif; line-height: 80px;\">";
contents += "<span style=\"font-weight: 600;\">문자온 안내</span> 메일입니다.</p> <a href=\"http://www.munjaon.co.kr\" target='_blank' style='text-decoration:none'><img src=\"http://www.munjaon.co.kr/publish/images/emailForm/top_logo.png\" alt=\"\" style=\"width: 94px; height: 53px; float: right; margin-top: 12px; vertical-align:top;\"></a>";
contents += "</div>";
contents += "<div class=\"area_content\" style=\"padding: 6%;\">";
contents += "<p style=\"font-size: 18px; letter-spacing: -0.5px; line-height: 1.5; color: #222; margin: 0; font-weight: 400; font-family: 'Noto Sans KR', sans-serif;\">";
contents += "안녕하세요. 대량문자 발송 사이트 문자온입니다.<br></p>";
contents += "<p class=\"area_num\" style=\"background-color: #f3f4f5; width: 100%; font-family: 'Noto Sans KR', sans-serif; font-size: 21px; font-weight: 600; box-sizing: border-box; border-radius: 1px; letter-spacing: -0.5px; padding: 8px 30px; margin: 20px 0;\">%emailContents%</p>";
contents += "<div class=\"info_mail\" style=\"width: 100%; border-top: 1px solid #d5d5d5; margin-top: 20px;\">";
contents += "<p style=\"font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">본 메일은 <span style=\"font-weight: 500;\">발신전용</span>이며, 문의에 대한 회신은 처리되지 않습니다. 문자온 관련하여 궁금하신 점이나 불편한 사항은 <span style=\"font-weight: 500;\">고객센터</span>를 통해 문의하여 주시기 바랍니다.</p>";
contents += "<p style=\"margin-top: 20px; font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">주소 : (12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스) <br> 사업자 번호 : 653-87-00858 | 대표 : 유인식 | 통신판매등록번호 : 제 2021-다산-0422 <br> 문의전화 : 1551-8011 | E-mail : help@iten.co.kr</p>";
contents += "<p style=\"margin-top: 20px; font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">Copyright 2020 ⓒ MUNJAON co. Ltd, All rights reserved.</p>";
contents += "</div>";
contents += "</div>";
contents += "</div>";
contents += "</div>";
contents += "</body>";
contents += "";
contents += "</html>";
String repContents = contents;
mailSender.setContents("기업명 : "+mberNm + "\r\n 가입 아이디 : " + mberId);
String emailCont = mailSender.getContents().replace("\r\n", "<br/>");//줄바꿈 변환해주기
repContents = repContents.replace("%emailContents%", emailCont);
// 이메일로 보내기
SendMail sMail = new SendMail();
// 사용자 이메일 주소
mailSender.setSend_from("noreply@munjaon.co.kr");
// 메일 제목
String emailTitle = "[문자온] " + title + " - ("+mberNm+") ";
mailSender.setTitle(emailTitle);
// 메일 내용
mailSender.setContents(repContents);
// cs 담당자 메일전송 여부 목록 조회
UserDefaultVO userSearchVO = new UserDefaultVO();
userSearchVO.setAuthorCode("ROLE_CS");
userSearchVO.setRecordCountPerPage(100000);
userSearchVO.setFirstIndex(0);
List<?> resultList = userManageService.selectUserList(userSearchVO) ;
for(int i=0; i < resultList.size(); i++) {
if("Y".equals(((EgovMap)resultList.get(i)).get("emailSendYN"))) {
String sandEmailAdres = "";
sandEmailAdres = (String)((EgovMap)resultList.get(i)).get("emailAdres");
if (StringUtils.isNotEmpty(sandEmailAdres)) {
// 발송자 이메일 주소
mailSender.setSend_to(sandEmailAdres);
// 메일 발송하기
sMail.sendMail2(mailSender);
//발송 이력 저장 로그
sendLogInsert(mberId, "2" ,mailSender.getSend_from() ,mailSender.getSend_to(), repContents);
}
}
}
} catch (Exception e) {
}
}
/**
* @Method Name : csAdminSmsNoticeSend
* @작성일 : 2022. 7. 12.
* @작성자 : WYH
* @수정일 : 2022. 7. 14.
* @작성자 : JSP
* @Method 설명 : CS관리자 SMS 알림전송( mberNm : 기업명, mberId : 가입아이디 , title : 문자 제목)
*/
public void csAdminSmsNoticeSend(String subTitle, String title) throws Exception{
String smsTxt = "[문자온] %title% - %subTitle%";
smsTxt = smsTxt.replace("%title%", title);
smsTxt = smsTxt.replace("%subTitle%", subTitle);
try {
Date nowDate = new Date();
SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
MjonMsgVO mjonMsgVO = new MjonMsgVO();
mjonMsgVO.setMsgDiv("S"); // 단문
// 문자타입별 대표전송사 정보
MjonMsgVO mjonMsgVO2 = new MjonMsgVO();
mjonMsgVO2 = mjonMsgService.selectRepMsgAgetnInfo(mjonMsgVO);
// 전송사 구분 코드 - 01 : 아이하트, 02 : 현대 퓨쳐넷, 03 : 아이엠오, 04 : 다우기술
mjonMsgVO.setAgentCode(mjonMsgVO2.getAgentCode()); //전송사 선택
// 전송금액
mjonMsgVO.setTotPrice(mjonMsgVO2.getAgentPrice().toString()); //총금액
mjonMsgVO.setEachPrice(mjonMsgVO2.getAgentPrice().toString()); //한건 금액
mjonMsgVO.setMsgType("4"); // 단문 전송
//문자종류 관리자가 발송하는 것은 msgKind : S 로 셋팅
mjonMsgVO.setMsgKind("S");
mjonMsgVO.setSmsTxt(smsTxt); // 문자 내용
mjonMsgVO.setReserveYn("N"); // 즉시 전송
mjonMsgVO.setCallFrom("15518011"); // 시스템 문자발송 번호
mjonMsgVO.setUserId("system");
mjonMsgVO.setMsgPayCode("SMS");
mjonMsgVO.setMsgGroupCnt("0");
mjonMsgVO.setReqDate(simpleDateFormat2.format(nowDate));
// cs 담당자 메일전송 여부 목록 조회
UserDefaultVO userSearchVO = new UserDefaultVO();
userSearchVO.setAuthorCode("ROLE_CS");
userSearchVO.setRecordCountPerPage(100000);
userSearchVO.setFirstIndex(0);
List<?> resultList = userManageService.selectUserList(userSearchVO) ;
for(int i=0; i < resultList.size(); i++) {
if("Y".equals(((EgovMap)resultList.get(i)).get("mbtlSendYN"))) {
String moblphonNo = "";
moblphonNo = (String)((EgovMap)resultList.get(i)).get("moblphonNo");
if (StringUtils.isNotEmpty(moblphonNo)) {
// 받는사람
mjonMsgVO.setCallTo(moblphonNo);
MjonMsgReturnVO returnVO = mjonMsgDataService.insertSysMsgDataInfo(mjonMsgVO);
returnVO.getSendMsgCnt();
returnVO.getSendMsgBlockCnt();
// 시스템 발송 로그
sendLogInsert(returnVO.getMsgGroupId(), "1" ,mjonMsgVO.getCallFrom() ,mjonMsgVO.getCallTo(), smsTxt);
}
}
}
} catch (Exception e) {
}
}
/**
* @Method Name : smishingSmsNoticeSend
* @작성일 : 2022. 11. 24.
* @작성자 : JSP
* @수정일 : 2022. 11. 24.
* @작성자 : JSP
* @Method 설명 : 스미싱의심 SMS 알림전송(userId : 아이디, userNm : 이름)
*/
public void smishingSmsNoticeSend(String title, String userId, String userNm) throws Exception{
String smsTxt = "[문자온] %title%/%userId%/%userNm%";
smsTxt = smsTxt.replace("%title%", title);
smsTxt = smsTxt.replace("%userId%", userId);
smsTxt = smsTxt.replace("%userNm%", userNm);
try {
Date nowDate = new Date();
SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
MjonMsgVO mjonMsgVO = new MjonMsgVO();
mjonMsgVO.setMsgDiv("S"); // 단문
// 문자타입별 대표전송사 정보
MjonMsgVO mjonMsgVO2 = new MjonMsgVO();
mjonMsgVO2 = mjonMsgService.selectRepMsgAgetnInfo(mjonMsgVO);
// 전송사 구분 코드 - 01 : 아이하트, 02 : 현대 퓨쳐넷, 03 : 아이엠오, 04 : 다우기술
mjonMsgVO.setAgentCode(mjonMsgVO2.getAgentCode()); //전송사 선택
// 전송금액
mjonMsgVO.setTotPrice(mjonMsgVO2.getAgentPrice().toString()); //총금액
mjonMsgVO.setEachPrice(mjonMsgVO2.getAgentPrice().toString()); //한건 금액
mjonMsgVO.setMsgType("4"); // 단문 전송
//문자종류 관리자가 발송하는 것은 msgKind : S 로 셋팅
mjonMsgVO.setMsgKind("S");
mjonMsgVO.setUserId("system"); // 문자전송 ID
mjonMsgVO.setSmsTxt(smsTxt); // 문자 내용
mjonMsgVO.setReserveYn("N"); // 즉시 전송
mjonMsgVO.setCallFrom("15518011"); // 시스템 문자발송 번호
mjonMsgVO.setUserId("system");
mjonMsgVO.setMsgPayCode("SMS");
mjonMsgVO.setMsgGroupCnt("0");
mjonMsgVO.setReqDate(simpleDateFormat2.format(nowDate));
// 받는사람
mjonMsgVO.setCallTo("15518011");
MjonMsgReturnVO returnVO = mjonMsgDataService.insertSysMsgDataInfo(mjonMsgVO);
returnVO.getSendMsgCnt();
returnVO.getSendMsgBlockCnt();
// 시스템 발송 로그
sendLogInsert(returnVO.getMsgGroupId(), "1" ,mjonMsgVO.getCallFrom() ,mjonMsgVO.getCallTo(), smsTxt);
}
catch (Exception e) {
}
}
/**
* @Method Name : userSmsSystemSend
* @작성일 : 2023. 07. 18.
* @작성자 : JSP
* @수정일 : 2023. 07. 18.
* @작성자 : JSP
* @Method 설명 : 사용자에게 System 문자 발송
*/
public void userSmsSendBySystem(String callTo, String smsTxt) throws Exception{
try {
Date nowDate = new Date();
SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
MjonMsgVO mjonMsgVO = new MjonMsgVO();
int fileCount = 0;
String msgType = "4"; // 단문
String msgDiv = "S"; // 단문
//문자열 길이 체크 해주기
String charset = "euc-kr"; //문자 바이트 계산에 필요한 캐릭터 셋 : 한글 2Byte로 계산
String smsCont = smsTxt.replace("\r\n", "\n");
int bytes = smsCont.getBytes(charset).length;
if(bytes > 90) {//장문일 경우 문자타입을 변경해준다.
msgType = "6";
}
// 문자타입 구분
if (msgType.equals("6")) {
if (fileCount > 0) {
msgDiv = "P"; // 그림
mjonMsgVO.setNeoType("4");
}
else {
msgDiv = "L"; // 장문
}
}
mjonMsgVO.setMsgType(msgType); // 단문 : 4, 장문, 그림 : 6
mjonMsgVO.setMsgDiv(msgDiv); // 단문 : S, 장문 : L
// 문자타입별 대표전송사 정보
MjonMsgVO mjonMsgVO2 = new MjonMsgVO();
mjonMsgVO2 = mjonMsgService.selectRepMsgAgetnInfo(mjonMsgVO);
mjonMsgVO.setAgentCode(mjonMsgVO2.getAgentCode()); //전송사 선택
mjonMsgVO.setTotPrice(mjonMsgVO2.getAgentPrice().toString()); //총금액
mjonMsgVO.setEachPrice(mjonMsgVO2.getAgentPrice().toString()); //한건 금액
mjonMsgVO.setUserId("system"); // 문자전송 ID
mjonMsgVO.setMsgKind("S"); //문자종류 관리자가 발송하는 것은 msgKind : S 로 셋팅
mjonMsgVO.setFileCnt("0"); //첨부이미지 갯수
mjonMsgVO.setSmsTxt(smsTxt); // 문자 내용
mjonMsgVO.setReserveYn("N"); // 즉시 전송
mjonMsgVO.setCallFrom("15518011"); // 시스템 문자발송 번호
mjonMsgVO.setUserId("system");
mjonMsgVO.setMsgPayCode("SMS");
mjonMsgVO.setMsgGroupCnt("0");
mjonMsgVO.setReqDate(simpleDateFormat2.format(nowDate));
// 받는사람
mjonMsgVO.setCallTo(callTo);
MjonMsgReturnVO returnVO = mjonMsgDataService.insertSysMsgDataInfo(mjonMsgVO);
returnVO.getSendMsgCnt();
returnVO.getSendMsgBlockCnt();
// 시스템 발송 로그
sendLogInsert(returnVO.getMsgGroupId(), "1" ,mjonMsgVO.getCallFrom() ,mjonMsgVO.getCallTo(), smsTxt);
}
catch (Exception e) {
}
}
/**
* @Method Name : userAllTermsEmailSend
* @작성일 : 2023. 3. 30.
* @작성자 : JSP
* @수정일 : 2023. 4. 07.
* @작성자 : JSP
* @Method 설명 : 전체회원 이메일발송
* String emailTitle : 이메일 제목
* String emailContents : 이메일 내용
*/
public void userAllTermsEmailSend() throws Exception{
// 이메일로 보내기
SendMail sendMail = new SendMail();
EmailVO mailSender = new EmailVO();
mailSender.setSend_from("noreply@munjaon.co.kr"); // 사용자 이메일 주소
// Step1. 이용약관 메일발송 대상여부 체크
TermsVO termsVO = new TermsVO();
termsVO = egovSiteManagerService.selectTermsMastEffectUseInfo(termsVO);
if (null != termsVO) {
// 이메일정보
String emailTitle = ""; // 메일 제목
String emailContents = ""; // 메일 내용
String terms = "개인정보처리방침";
if("02".equals(termsVO.getTermsDivCode())) {
terms = "이용약관";
}
emailTitle = "[문자온] 서비스 " + terms + " 개정 안내";
emailContents = termsVO.getEmailInfoCn();
mailSender.setTitle(emailTitle);
mailSender.setContents(emailContents);
// Step2. 발송대상자 List
termsVO.setRecordCountPerPage(200);
List<TermsVO> resultList = new ArrayList<TermsVO>();
resultList = egovSiteManagerService.selectTermsEmailTargetList(termsVO);
for(TermsVO item : resultList) {
String mberEmailAdres = item.getMberEmailAdres();
String mberId = item.getMberId();
try {
if (StringUtils.isNotEmpty(mberEmailAdres)) {
// 이메일 주소 유효성검사
if (emailValidator(mberEmailAdres)) {
// 수신 이메일 주소
mailSender.setSend_to(mberEmailAdres);
// 메일 발송하기
sendMail.sendMail2(mailSender);
//발송 이력 저장 로그
sendLogInsert(mberId, "2", mailSender.getSend_from(), mailSender.getSend_to(), emailContents);
}
else {
System.out.println("EmailAddress is invalid : " + mberEmailAdres);
}
}
// 발송대상 삭제처리
TermsVO termsVO2 = new TermsVO();
termsVO2.setTermsMastNo(termsVO.getTermsMastNo());
termsVO2.setMberId(mberId);
egovSiteManagerService.deleteTermsEmailTagetByMemberId(termsVO2);
} catch (Exception e) {
// 발송대상 삭제처리
TermsVO termsVO2 = new TermsVO();
termsVO2.setTermsMastNo(termsVO.getTermsMastNo());
termsVO2.setMberId(mberId);
egovSiteManagerService.deleteTermsEmailTagetByMemberId(termsVO2);
System.out.println("userAllTermsEmailSend Err MberId : " + mberId);
System.out.println("userAllTermsEmailSend Err : " + e.getMessage());
}
}
// Step 3. 발송대상자가 남아있는지 체크
termsVO.setRecordCountPerPage(1);
List<TermsVO> resultList2 = new ArrayList<TermsVO>();
resultList2 = egovSiteManagerService.selectTermsEmailTargetList(termsVO);
// Step 4. 이용약관 마스터테이블 발송완료로 업데이트
if (resultList2.size() == 0) {
egovSiteManagerService.updateTermsMastEmailYn(termsVO);
}
}
else {
System.out.println("이용약관/개인정보 메일발송 대상 없음.");
}
}
/**
* @Method Name : userTermsTestEmailSend
* @작성일 : 2023. 3. 30.
* @작성자 : JSP
* @수정일 : 2023. 4. 07.
* @작성자 : JSP
* @Method 설명 : 테스트 이메일발송
* String emailTitle : 이메일 제목
* String emailContents : 이메일 내용
* String toEmailAdres : 개별발송 이메일주소
*/
public void userTermsTestEmailSend(String emailTitle, String emailContents, String toEmailAdres) throws Exception{
try {
// 이메일로 보내기
SendMail sendMail = new SendMail();
EmailVO mailSender = new EmailVO();
mailSender.setSend_from("noreply@munjaon.co.kr"); // 사용자 이메일 주소
mailSender.setTitle(emailTitle); // 메일 제목
mailSender.setContents(emailContents); // 메일 내용
// toEmailAdres 개별발송
if (StringUtils.isNotEmpty(toEmailAdres)) {
// 수신 이메일 주소
mailSender.setSend_to(toEmailAdres);
// 메일 발송하기
sendMail.sendMail2(mailSender);
//발송 이력 저장 로그
sendLogInsert("", "2" ,mailSender.getSend_from() ,mailSender.getSend_to(), emailContents);
}
} catch (Exception e) {
System.out.println("userTermsTestEmailSend Err : " + e.getMessage());
}
}
// 이메일 주소 유효성검사
public static boolean emailValidator(String email)
{
// `EmailValidator` 인스턴스 가져오기
EmailValidator validator = EmailValidator.getInstance();
// 이메일 주소를 포함하는 지정된 문자열의 유효성 검사
if (!validator.isValid(email)) {
return false;
}
return true;
}
/**
* @Method Name : sendLogInsert
* @작성일 : 2022. 7. 12.
* @작성자 : WYH
* @Method 설명 : 발송 이력 저장 로그
* sendId : 전송ID
* type : 발송 이력 저장 SendType 1:문자로 발송 2:이메일로 발송
* sendFrom : 발신자 정보
* sendTo : 수신자 정보
* repContents : 발송 내용
*/
private void sendLogInsert(String sendId , String type , String sendFrom , String sendTo, String repContents) throws Exception {
// 발송 이력 저장 SendType 1:문자로 발송 2:이메일로 발송
SendLogVO sendLogVO = new SendLogVO();
sendLogVO.setSendId(sendId);
sendLogVO.setSendType(type);
sendLogVO.setFrstSendInfo(sendFrom);//이메일 발신자 정보
sendLogVO.setReceive(sendTo); //수신자 정보
sendLogVO.setContents(repContents);
mjonMsgDataService.insertSysMsgLog(sendLogVO);
}
}