꾸물꾸물 졔의 개발공부
[Springboot] 회원가입 이메일 인증하기 (네이버) 본문
네이버 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) : 메세지 발송
'SPRING' 카테고리의 다른 글
[Springboot] JWT(3)_filter 적용 및 토큰 검사/인증 부여 (0) | 2022.08.23 |
---|---|
[Springboot] JWT(2)_refresh 토큰 redis 저장 (0) | 2022.08.16 |
[Springboot] JWT(1)_로그인, 토큰 발급하기 ( access + refresh ) (0) | 2022.08.16 |
[Spring] Spring Cache 란 ? 스프링캐시 (0) | 2022.07.31 |
spring_mvc 패턴에 mybatis 적용하기 (0) | 2022.04.22 |