728x90
반응형

1. build.gradle 추가

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

 

2. Service 작성

JavaMailSenderImpl 을 불러와 설정을 적용시키고 보내는 방식이다.

@Service
@Slf4j
@RequiredArgsConstructor
public class EmailService {

    public void sendMail(String subject, String text) {
        try {

            String mailServer = "메일서버";
            int port = "포트";
            String from = "보내는사람";
            String to = "받는사람";
            String username = "메일 아이디";
            String password = "메일 비밀번호";
            Boolean useTls = TLS를 쓸 경우 true;
            TlsVersion tlsVersion = TLS 버전(ex. TLSv1.2);

            JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
            javaMailSender.setHost(mailServer);
            javaMailSender.setPort(port);
            javaMailSender.setDefaultEncoding("UTF-8");

            if (!Objects.equals(username, "")) {
                javaMailSender.setUsername(username);
            }

            if (!Objects.equals(password, "")) {
                javaMailSender.setPassword(password);
            }

            Properties pt = new Properties();

            if (Objects.equals(username, "") && Objects.equals(password, "")) {
                pt.put("mail.smtp.auth", false);
            } else {
                pt.put("mail.smtp.auth", true);
            }

            if (useTls) {
                pt.put("mail.smtp.socketFactory.port", port);
                pt.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
                pt.put("mail.smtp.starttls.enable", true);
                pt.put("mail.smtp.starttls.required", true);
                pt.put("mail.smtp.ssl.protocols", tlsVersion);
            }

            javaMailSender.setJavaMailProperties(pt);

            MimeMessage message = javaMailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message, true);

            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(text);
            javaMailSender.send(message);

        } catch (Exception e) {
            log.error(e.getMessage());
        }
    }
}

 

3. 구글에서 보안 설정을 해준다.

설정-> 계정 -> 2단계 인증을 설정하고 앱 비밀번호를 사용하면 된다.

참고 Spring Mail AuthenticationFailedException 해결하기 | Be an Overachiever (ivvve.github.io) 

 

728x90
반응형

+ Recent posts