2017년 5월 12일 금요일

Spring boot email 보내기

스ㅍ링 부트를 이용하여 java mail sender를 설정하고, email을 보낼 수 있다.
이 글에서는 gmail을 사용하여, email을 보내는 방법을 설명하도록 한다.

가장 먼저, gmail의 email smtp를 사용하기 위해서는 2 verification step이 필요하다.
해당 설정은 다른 글 [http://todayleave.blogspot.kr/2016/01/google-2-step-verification.html] 에서 설명하도록 하겠다.

spring-boot-starter-mail 라이브러리를 import하게 되면,
해당 javaMailSender 빈이 설정되어 있지않는 경우에는 자동으로 빈을 생성해준다.
다만, 이 경우에는 property file [application.properties 혹은 application.yml]을 통해
해당 값을 아래와 같이 설정해주어야 한다.

spring:
  mail:
    host: smtp.gmail.com
    port: 587
    username: test_email@gmail.com
    password: test_password
    properties:
      mail:
        smtp:
          starttls:
            enable: true

위 프로퍼티 파일에서 username은 gmail 계정, password는 2 verification에서 생성한 app password를 설정하면 된다.

위와 같이 설정한 이후, 아래와 같이 emailService의 sendMail method를 통해 email을 직접 보낼 수 있다.

@Service
public class EmailServiceImpl implements EmailService {

    @Autowired
    private JavaMailSender javaMailSender;

    @Override
    public void sendMail(TestEmail email) throws MessagingException {
        MimeMessage message = javaMailSender.createMimeMessage();
        message.setSubject(email.getSubject());
        message.setSender(new InternetAddress(email.getSender()));
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(email.getRecipient()));
        message.setText(email.getContent());
        message.setSentDate(new Date());

        javaMailSender.send(message);
    }
}

해당 메소드를 통해 email을 보냈을 때, 받은 메일을 아래와 같이 확인할 수 있다.







전체 예제는 아래 링크에서 다운로드가 가능하다.

https://gitlab.com/shashaka/spring-email-project

댓글 없음 :

댓글 쓰기