File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
2024-11-14
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(500);
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);
}
}