본문 바로가기

STUDY/Spring

Spring Boot | SMTP (worksmobile 메일)

필요한 의존성을 추가한다.

implementation 'org.springframework.boot:spring-boot-starter-mail'

설정 파일에 메일 발송계정 정보를 입력한다.

spring:
  mail:
    host: smtp.worksmobile.com
    port: 587
    username: 발송계정 메일주소
    password: 발송계정 비밀번호
    properties:
      mail:
        smtp:
          auth: true
          starttls.enable: true

회사 메일이 웍스모바일 메일을 이용하고 있기 때문에 해당 정보로 입력해줬다.
정보를 확인하는 방법은, 환경설정 > 고급설정 > IMAP/SMTP에서 확인할 수 있다.

HTML태그를 이용해 메일을 발송하고자 한다면 MimeMessage를 이용해야 한다.
그리고 setText()의 두 번째 인자값을 true로 설정해야 HTML형식으로 전송된다.

@RequiredArgsConstructor
@Service
public class MailService {

    private final MailProperties mailProperties;
    private final JavaMailSender mailSender;

    public void sendSimpleMailMessage(String subject, String content) {
        final SimpleMailMessage simpleMailMessage = new SimpleMailMessage();

        simpleMailMessage.setTo(mailProperties.getTO());
        simpleMailMessage.setFrom(mailProperties.getFROM());
        simpleMailMessage.setSubject(subject);
        simpleMailMessage.setText(content);

        mailSender.send(simpleMailMessage);
    }

    public void sendTemplateMailMessage(String subject, String content, String filePath) {
        try {
            final MimeMessage mimeMessage = mailSender.createMimeMessage();
            final MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true);

            messageHelper.setTo(mailProperties.getTO());        // 메일 발송계정 세팅
            messageHelper.setFrom(mailProperties.getFROM());    // 메일 수신계정 세팅
            messageHelper.setSubject(subject);
            messageHelper.setText(String.format("<html><body>%s</body></html>", content), true);

            if (StringUtils.hasText(filePath)) {
                final File file = new File(filePath);
                messageHelper.addAttachment(file.getName(), file);
            }

            mailSender.send(mimeMessage);

        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

}