티스토리 뷰
앞 글에서 기본적인 text 형식의 메일을 보내는 방법을 정리하였다.
2022.02.09 - [토이프로젝트] - [ spring ] send Email 방법 - ( Gmail 서버 이용 )
[ spring ] send Email 방법 - ( Gmail 서버 이용 )
토이프로젝트하면서 이메일을 전송해야 하는 기능을 구현해야 했다. Google 메일 서버를 이용해서 보내는 방법으로 spring 에서 작성하였다. 아래는 spring 에서 작성한 메일 전송 코드 및 내용들이
tbmaster.tistory.com
본 글에서는 TEXT 형식이 아닌 HTML 형식으로 메일을 전송하는 방법에 대해서 정리한다.
요즘 다른 기업에서 보내는 메일을 받아보면 예쁘게 HTML 형식으로 전송하는 것을 볼 수 있다.
그래서 꾸미는 건 자신 없지만, HTML 형식으로 보내는 방식으로 토이프로젝트를 진행하고 싶어서, HTML 형식의 메일 전송 기능을 개발하고 본 글에 정리한다.
Google 메일 서버 설정 방법 등은 위에 올린 "send Email 방법 -(Gmail 서버 이용)" 을 참고하세요 :)
HTML 형식의 메일 전송 방법
1. JAVA 코드에서 String 형식으로 HTML 작성하여 전송하기
2. Template을 이용하여 HTML 메일 전송하기
-> 1. 방법은 다른 라이브러리 필요 없으나.... 정말 정말 가독성이 떨어진다...
-> 2. HTML 파일을 사용하여 메일을 전송한다. ( 여기서는 Thymeleaf 라이브러리를 사용하였다. )
1. JAVA 코드에서 String 형식으로 HTML 작성하여 전송하기
아래 화면과 같이 HTML 을 String 형식으로 작성한다.
MimeMessagePreparator 와 MimeMessageHelper를 이용하여, JavaMailSender 를 통해 메일을 전송한다.
public void htmlSend(String email, String username){
MimeMessagePreparator preparatory = mimeMessage -> {
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, "UTF-8");
String content = [위 화면에서의 HTML로 작성된 String ];
helper.setTo([받는 사람]);
helper.setFrom([보내는 사람]);
helper.setSubject([메일 제목]);
helper.setText(content, true); //html 타입이므로, 두번째 파라미터에 true 설정
};
javaMailSender.send(preparatory);
}
2. Template을 이용하여 HTML 메일 전송하기
Thymeleaf 라이브러리를 추가한다.
아래 화면과 같이 HTML 을 작성한다.
MimeMessagePreparator 와 MimeMessageHelper를 이용하여, JavaMailSender 를 통해 메일을 전송한다.
※ Thymeleaf 는 default로 html 탐색을 src/main/resources/template/ 에 존재하는 html을 찾기 때문에, CalssLoaderTemplateResolver를 이용해 다른 경로를 설정하지 않는 이상, 반드시 저 디렉토리 내에서 html 파일을 작성해야한다.
public void htmlSend(String email, String username){
String verification_url = "localhost:8080/verification";
//Thymeleaf 로 작성된 html 파일에 전달할 변수를 context로 저장
Context context = new Context();
context.setVariable("username", username);
context.setVariable("verification_url", verification_url);
MimeMessagePreparator preparatory = mimeMessage -> {
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, "UTF-8");
//template 명: src/main/resources/templates 하단에 작성된 html 파일 명
String content = templateEngine.process([template 명], context);
helper.setTo([받는 사람]);
helper.setFrom([보내는 사람]);
helper.setSubject([메일 제목]);
helper.setText(content, true);
};
javaMailSender.send(preparatory);
}
'토이프로젝트' 카테고리의 다른 글
[ spring ] send Email 방법 - ( Gmail 서버 이용 ) (0) | 2022.02.09 |
---|---|
[error] Java Stream의 orElseThrow 사용 에러 (0) | 2022.02.08 |