본문 바로가기
JAVA

[SpringBoot] JavaMailSender를 이용한 SMTP 발송 테스트 진행

by Hwoarang757 2023. 10. 25.

[SpringBoot] JavaMailSender를 이용한 SMTP 발송 테스트 진행 

 

build.gradle에는 아래 항목을 추가 하였습니다 , javax.mail 사용시에 오류가 발생 하여 jakarta.mail로 대체 하였습니다.

    //jakarta.mail
    implementation group: 'com.sun.mail', name: 'jakarta.mail', version: '2.0.1'

 

application.properties 파일에는 메일 서버 관련 설정을 진행 하였습니다.

[ 제가 테스트 한 메일 서버의 경우 SSL 설정을 요청 하였습니다. ]

#mail관련
spring.mail.host=smtps.hiworks.com
spring.mail.port=465

spring.mail.username=아이디@도메인
spring.mail.password=인증패스워드

spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.ssl.enable=true
spring.mail.properties.mail.smtp.ssl.trust=*

 

JavaMailSenderImpl의 경우 @Autowired 어노테이션으로 자동으로 의존성을 주입하였습니다!

package com.doc.controller;

import java.util.HashMap;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import jakarta.mail.internet.MimeMessage;


@RestController
public class MailTestController {

    private final Logger logger = LogManager.getLogger(FileController.class);

    @Autowired
    private JavaMailSenderImpl mailSender;


    /*
    @Autowired
    private JavaMailSender javaMailSender;

    @Bean
    public JavaMailSenderImpl mailSender() {
        JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();

        return javaMailSender;
    }
    */


    @GetMapping("/MailSendTest")
    public String MailSendTest(@RequestParam HashMap<String,String> param) {
        logger.info(new Exception().getStackTrace()[0].getMethodName());
        try {
            String from = "발송자메일주소";
            String to = "수신자메일주소";
            String subject = "SMTP 발송 테스트 진행";
            String htmlMessage = "<html><head></head><body><p style='font-size:30px'>MIME Message 테스트</p></body></html>";


            MimeMessage mimeMessage = mailSender.createMimeMessage();
            MimeMessageHelper mimeHelper = new MimeMessageHelper(mimeMessage , true , "UTF-8");

            mimeHelper.setFrom(from);
            mimeHelper.setTo(to);
            mimeHelper.setSubject(subject);


            mimeHelper.setText(htmlMessage , true);

            logger.info(mailSender.getHost());
            logger.info(mailSender.getPort());


            mailSender.send(mimeMessage);


        } catch(Exception exception) {
            logger.error(exception);
        }
        return "SUCCESS";
    }




}

 

테스트 시에 메일이 전송 되고 , 수신되는 것을 확인할 수 있었습니다.