카테고리 없음

[Spring boot] Spring boot + Gradle JAVA 이메일 발송 SMTP 구현

한희성 2020. 8. 7.
반응형

SpringBoot 메일 보내기 기능을 검색하면 아주 많은 자료들이 나오곤 합니다. 

이번 포스팅에서는 아주 간단하게 복붙만으로 구현할 수 있는 내용을 작성 하도록 하겠습니다.


1. 구글 계정 SMTP 사용 준비

https://myaccount.google.com/lesssecureapps?pli=1

* SMTP 를 사용하기 위해 허용 해주셔야합니다.


2. 의존성 주입

* compile("org.springframework.boot:spring-boot-starter-mail")


3. SMPT 정보 셋팅을 위해 application.yml 을 아래와 같이 셋팅

spring:
mail:
host: smtp.gmail.com
port: 587
username: 계정
password: 비밀번호
properties:
mail:
smtp:
auth: true
starttls:
enable: true


4. JavaMailSender, MimeMessage, MimeMessageHelpe 세 가지를 사용하였으며, 전체 소스 입니다.

package com.hhseong.smtp.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.io.UnsupportedEncodingException;

@RestController
@Controller
public class IndexController {

@Autowired
private JavaMailSender javaMailSender;

@GetMapping("/")
public String index() throws MessagingException, UnsupportedEncodingException {

String to = "hhsung0120@naver.com";
String from = "hshan@test.com";
String subject = "test";

StringBuilder body = new StringBuilder();
body.append("<html> <body><h1>Hello </h1>");
body.append("<div>테스트 입니다2. <img src=\"cid:flower.jpg\"> </div> </body></html>");

MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(message, true, "UTF-8");

mimeMessageHelper.setFrom(from,"hshan");
mimeMessageHelper.setTo(to);
mimeMessageHelper.setSubject(subject);
mimeMessageHelper.setText(body.toString(), true);

FileSystemResource fileSystemResource = new FileSystemResource(new File("C:/Users/HOME/Desktop/test.txt"));
mimeMessageHelper.addAttachment("또르르.txt", fileSystemResource);

FileSystemResource file = new FileSystemResource(new File("C:/Users/HOME/Desktop/flower.jpg"));
mimeMessageHelper.addInline("flower.jpg", file);

javaMailSender.send(message);

return "하이";
}
}


MimeMessageHelper

* 스프링에서 제공하는 헬퍼 객체이며, html 레이아웃, 이미지, 첨부파일 등 메시지를 생성할 수 있도록 한다.

* 생성자

MimeMessageHelper(MimeMessage mimeMessage, boolean multipart, String encoding)

* SimpleMailMessage 의 메서드는 모드 지원하고, 추가 된 것은 아래와 같다

mimeMessageHelper.setText : 내용, 두번째 파라메티는 html 사용 여부 

mimeMessageHelper.addAttachment : 파일이름, 파일경로

mimeMessageHelper.addInline : cid 이미지 id, 파일경로



5. 결과 




6. 기타

* DOM 이 많다면 MailTemplateService 를 이용

반응형

댓글

💲 추천 글