티스토리 뷰

반응형

 

 

앞 글에서 기본적인 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);
    }

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함