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 를 이용
댓글