27_Email, Scheduling
- email 의존성 주입
- application.properties에 아이디, 앱비번 등 기록
- CustomEmailProperties Class 생성 후 properties에 있는 정보 저장
- EmailConfiguration Class 생성 후 메일 사용 설정(JavaMailSender @Bean 설정 메서드 생성)
- JavaMailSenderImpl 객체 생성 후 이용 업체에 대한 정보 설정
- Properties 객체 생성 후 통신과 관련된 추가 설정 후 JavaMailSenderImpl에 등록
- JavaMailSenderImpl 객체 return
- EmailServiceImpl에 JavaMailSender 연결 후(sender) 메일, 제목, 텍스트 입력 후 전송
- MimeMessage 객체에 JavaMailSender 데이터 입력/생성
- MImeMessageHelper 객체 생성(MimeMessage 객체 입력) 및 받는사람, 제목, 내용 추가
- JavaMailSender 객체로 email 전송
JSOUP으로 보낼 내용 html으로 가공
- 작성해둔 html 파일 불러오기 ClassPathResource resource = new ClassPathResource("templates/cert.html");
- Scanner로 String으로 변환
Scanner sc = new Scanner(resource.getFile());
StringBuffer buffer = new StringBuffer();
while(sc.hasNextLine()) {
buffer.append(sc.nextLine());
}
- 변환된 String을 Html로 해석 Document doc = Jsoup.parse(buffer.toString());
- id 찾기
Element title = doc.getElementById("custom-email-title");
- 변경
title.text("제목 변경입니다");
- a태그 링크 변경
link.attr("href", "https://www.naver.com");
- doc를 문자열로 변환 후 반환 return doc.toString();
Scheduling
*Application.java 에 어노테이션 @EnableScheduling을 추가
서비스나 컴포넌트에 메서드 작성함
실행할 메서드에 @Scheduled(fixedRate=1000L)
fixedDelay : 실행시점
fixedRate : 주기(단위 : ms, long)
cron="******" : 매초 매분 매시 매일 매월 매요일
@Scheduled(fixedRate = 1000L)//1초
@Scheduled(cron="* * * * * *")//1초(매초 매분 매시 매일 매월 매요일)
@Scheduled(cron="0 * * * * *")//매분 실행 (0초 매분 매시 매일 매월 매요일)
@Scheduled(cron="0 0 * * * *")//매시정각
@Scheduled(cron="0 0 9 * * *")//매일 아침 9시
@Scheduled(cron="0 0 9,18 * * *")//매일 아침 9시, 오후 6시 실행
@Scheduled(cron="0 0 9-18 * * *")//매일 출근시각부터 퇴근시각까지 정각마다
@Scheduled(cron="0 0 9-18 * * 1-5")//주중 출퇴근 시간 동안 정각마다(월요일:1 cf) 자바는 일요일이 1, 영어도 가능)
@Scheduled(cron="0 0 9-18 * * mon-fir")
@Scheduled(cron="0 0 15 25 * ?")//급여 지급 시각(매월 25일 오후 3시) ? : 아무거나 와도 됨
@Scheduled(cron="0 0 7 */10 * ?")//열흘마다(주기) 아침 7시에 주기 : */10
@Scheduled(cron="* * * ? * thu#2")//2번째주 목요일(4#2)
@Scheduled(cron="0 0 18 ? * thuL")//매월 마지막 목요일 퇴근시각(# 안씀, 4L)