쌤리

[Spring Boot] 이메일 발송 본문

자바 JAVA/Spring | 스프링

[Spring Boot] 이메일 발송

saml2l 2020. 8. 20. 12:28
  • 메일 발송을 위해서 아래 두 가지 dependency 를 추가해야한다. 
		<!-- 메일 보내기 위한 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
		</dependency>

		<!-- 메일 보내기 위한 -->
		<dependency>
			<groupId>com.sun.mail</groupId>
			<artifactId>javax.mail</artifactId>
			<version>1.6.2</version>
		</dependency>​

  • custom 에 아래 처럼 정보를 넣어놓고, ..

  • @Value 어노테이션을 이용해서 application.yml 에 있는 정보를 아래 에서 사용 가능해진다

  • 소스코드
  • MailHandler 클래스를 선언해주고 아래와 같이 작성
package com.sbs.sbl.mp.service;

import java.io.UnsupportedEncodingException;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;

import com.sbs.sbl.mp.dto.ResultData;

@Service
public class MailService {
	@Autowired
	private JavaMailSender sender;
	@Value("${custom.emailFrom}")
	private String emailFrom;
	@Value("${custom.emailFromName}")
	private String emailFromName;

	private static class MailHandler {
		private JavaMailSender sender;
		private MimeMessage message;
		private MimeMessageHelper messageHelper;

		public MailHandler(JavaMailSender sender) throws MessagingException {
			this.sender = sender;
			this.message = this.sender.createMimeMessage();
			this.messageHelper = new MimeMessageHelper(message, true, "UTF-8");
		}

		public void setFrom(String mail, String name) throws UnsupportedEncodingException, MessagingException {
			messageHelper.setFrom(mail, name);
		}

		public void setTo(String mail) throws MessagingException {
			messageHelper.setTo(mail);
		}

		public void setSubject(String subject) throws MessagingException {
			messageHelper.setSubject(subject);
		}

		public void setText(String text) throws MessagingException {
			messageHelper.setText(text, true);
		}

		public void send() {
			try {
				sender.send(message);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	public ResultData send(String email, String title, String body) {

		MailHandler mail;
		try {
			mail = new MailHandler(sender);
			mail.setFrom(emailFrom.replaceAll(" ", ""), emailFromName);
			mail.setTo(email);
			mail.setSubject(title);
			mail.setText(body);
			mail.send();
		} catch (Exception e) {
			e.printStackTrace();
			return new ResultData("F-1", "메일이 실패하였습니다.");
		}

		return new ResultData("S-1", "메일이 발송되었습니다.");
	}
}

 회원가입 시 환영 메일을 발송할꺼기 때문에 MemberService 에서 메서드를 만들어준다

  •  
private void sendWelcomeMail(String email) {
		String title = String.format("[%s] 회원이 되신 것을 환영합니다.", siteName);
		StringBuilder body = new StringBuilder();
	
		body.append("<h1>가입이 완료되었습니다.</h1>");
		body.append(String.format("<p><a href=\"%s\" target=\"_blank\">%s</a>로 이동</p>", siteMainUri, siteName));
		
		mailService.send(email, title, body.toString());

		}

끝.

Comments