꾸물꾸물 졔의 개발공부

[Springboot] 회원가입 이메일 인증하기 (네이버) 본문

SPRING

[Springboot] 회원가입 이메일 인증하기 (네이버)

체제 2022. 8. 6. 14:48

 

네이버 SMTP Server 이용 

: ( 인증메일을 보낼 주소의 ) 네이버 메일 > 환경설정에 들어가서, POP3/SMTP를 사용모드로 바꿔준다. 


build.grade

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

 

MailConfig.java : 이메일 인증을 위한 설정파일 

@Configuration
public class MailConfig {
	
	@Bean
	public JavaMailSender javaMailService() {
		JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
		javaMailSender.setHost("smtp.naver.com");
		javaMailSender.setUsername("보낼 이메일주소");
		javaMailSender.setPassword("해당주소 비밀번호"); 
		
		javaMailSender.setPort(465);
		
		javaMailSender.setJavaMailProperties(getMailProperties());
		javaMailSender.setDefaultEncoding("UTF-8");
		
		return javaMailSender;
	}
	
	private Properties getMailProperties() {
		Properties properties = new Properties();
		properties.setProperty("mail.transport.protocol", "smtp");
		properties.setProperty("mail.smtp.auth", "true");
		properties.setProperty("mail.smtp.starttls.enable", "true");
	    properties.setProperty("mail.debug", "true");
	    properties.setProperty("mail.smtp.ssl.trust","smtp.naver.com");
	    properties.setProperty("mail.smtp.ssl.enable","true");
	    return properties;
		
	}
}

 

1. JavaMailSender 

: 메일 발송하는 기능의 MailSender 인터페이스 상속 + Java Mail API의 MimeMesage 

     1.1 . JavaMailSender 빈 설정 

             - JavaMailSenderImpl 클래스는 Java Mail API 이용, SMTP 프로토콜 사용 

             - SMTP 서버 주소 및 포트 번호 설정 

             - username / password 설정 

 

 

MailService.java : 인증코드 생성 및 메일 내용 작성 + 발송

public class MailService {

	@Autowired
	JavaMailSender javaMailSender;

	//인증코드 만들기
	public static String createKey() {
		
		StringBuffer key = new StringBuffer();
		Random random = new Random();
		
		for(int i=0; i<8; i++) {
			int index= random.nextInt(3);
			switch(index) {
			case 0:
				key.append((char)((int)(random.nextInt(26))+97));
				break;
			case 1:
				key.append((char)((int)(random.nextInt(26))+65));
				break;
			case 2:
				key.append(random.nextInt(10));
				break;
			}
		}
		return key.toString();
	}
	
	public String sendSimpleMessage(String to) throws Exception{
		
		String authKey = createKey(); // 메일로 보낼 인증 번호 
		System.out.println("보내는 대상 : "+to);
		System.out.println("인증번호 : "+authKey);
		MimeMessage message= javaMailSender.createMimeMessage();
		
		message.addRecipients(RecipientType.TO, to);
		message.setSubject("회원가입 인증번호 입니다");
		
		String msg="";
		msg+="<div style='margin:100px;'>";
		msg+="<div align='center' style='border:1px solid black; font-family:verdana';>";
		msg+="<h3 style='color:blue;'>회원가입 코드입니다.</h3>";
		msg+="<div style='font-size:130%'>";
		msg+="CODE : <strong>";
		msg+=authKey+"</strong><div><br/> ";
		msg+="</div>";
		
		message.setText(msg, "utf-8", "html");
		message.setFrom(new InternetAddress("보내는사람 주소"));
		
		//--------------------------------------
		//MimeMessage message = createMessage(to);
		try {
			javaMailSender.send(message);
			return authKey;
		}catch(MailException e) {
			e.printStackTrace();
			throw new IllegalArgumentException();
		}
	}

	
	
	
}

 - javaMailSender.createMimeMessage() : 보낼사람 + 제목 + 내용 설정

 - javaMailSender.send(message) : 메세지 발송