[Spring Boot] 이메일 보내기

2021. 6. 2. 11:38Spring

MailUtil

  • 코드를 작성하기 전 먼저 의존성을 주입해주어야 한다.

    // https://mvnrepository.com/artifact/org.apache.commons/commons-email
        implementation group: 'org.apache.commons', name: 'commons-email', version: '1.4'
  • MailUtil.java

    //메일을 보낼 클래스
    public class MailUtil {
        public void sendMail(User user) throws Exception {
            //Mail Server 설정
            String charSet = "utf-8";
            String hostSMTP = "smtp.naver.com"; //SMTP 서버명
            String hostSMTPid = ""; //이메일 아이디
            String hostSMTPpw = ""; // 이메일 패스워드
    
            //보내는 사람
            String fromEmail = ""; //보내는 사람의 이메일
            String fromName = "Danggeon;
    
            String subject = ""; //메일 제목
            String msg = ""; //메일 내용
    
            subject = "[DANGGEON] 임시 비밀번호 발급 안내";
            msg += "<div align = 'left'>";
            msg += "<h3>";
            msg += user.getUsername() + "님의 임시 비밀번호입니다. <br> 비밀번호를 변경하여 사용하세요 </h3>";
            msg += "<p>임시 비밀번호 : ";
            msg += user.getPassword() + "</p></div>";
    
            //email 전송
            String mailRecipient = user.getEmail(); //받는 사람 이메일 주소
            try {
                //객체 선언
                HtmlEmail mail = new HtmlEmail();
                mail.setDebug(true);
                mail.setCharset(charSet);
                mail.setSSLOnConnect(true); //SSL 사용
                mail.setHostName(hostSMTP);
                mail.setSmtpPort(465); //SMTP 포트 번호
                mail.setAuthentication(hostSMTPid, hostSMTPpw);
                mail.setStartTLSEnabled(true); //TLS 사용
                mail.addTo(mailRecipient, charSet);
                mail.setFrom(fromEmail, fromName, charSet);
                mail.setSubject(subject);
                mail.setHtmlMsg(msg);
                mail.send();
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
  • 마지막으로 이건 gmail, naver 둘 다 설정을 해줘야한다.

여기서 hostSMTP는 Gmail, naver가 각각 다르다! 그래서 해당 email에 맞는 SMTP를 설정해주어야한다!

2021-05-31-1-52-25.png

그렇지 않으면 서버에서 메일을 보낼 수 없으니 꼭 설정해야한다.