반응형
1. spring-boot-starter-mail 라이브러리 추가
// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-mail
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-mail', version: '2.6.3'
2. application.properties 에 설정 세팅
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username= //구글 계정 xxxxxxxxxxx@google.com
spring.mail.password= //구글 보안 -> 앱 비밀번호 16자리 생성하여 넣어줌
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.transport.protocol=smtp
spring.mail.debug=true
spring.mail.default-encoding=UTF-8
3. mailConfiguration 작성하기
package com.reviewer.portfolio.config;
import java.util.Properties;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
@Configuration
public class EmailConfig {
@Value("${spring.mail.transport.protocol}")
private String protocol;
@Value("${spring.mail.properties.mail.smtp.auth}")
private String auth;
@Value("${spring.mail.properties.mail.smtp.starttls.enable}")
private String starttls;
@Value("${spring.mail.debug}")
private String debug;
@Value("${spring.mail.host}")
private String host;
@Value("${spring.mail.port}")
private int port;
@Value("${spring.mail.username}")
private String username;
@Value("${spring.mail.password}")
private String password;
@Value("${spring.mail.default-encoding}")
private String encoding;
@Bean
public JavaMailSender javaMailSender() {
JavaMailSenderImpl javaMailSenderImpl = new JavaMailSenderImpl();
Properties properties = new Properties();
properties.put("mail.transport.protocol", protocol);
properties.put("mail.smtp.auth", auth);
properties.put("mail.smtp.starttls.enable", starttls);
properties.put("mail.smtp.debug", debug);
javaMailSenderImpl.setHost(host);
javaMailSenderImpl.setUsername(username);
javaMailSenderImpl.setPassword(password);
javaMailSenderImpl.setPort(port);
javaMailSenderImpl.setJavaMailProperties(properties);
javaMailSenderImpl.setDefaultEncoding(encoding);
return javaMailSenderImpl;
}
}
4. 뷰
<div class="mb-3">
<label for="username" class="form-label">이메일</label>
<input type="email" class="form-control" id="email" name="email" placeholder="email@google.com">
<input type="button" value="인증" id="certifiedEmail" class="btn btn-primary">
</div>
/* 이메일 인증 */
$('#certifiedEmail').on('click', function(){
var data = {
email : $('#email').val()
};
console.log(data);
$.ajax({
url: '/account/certifiedEmail',
type: 'post',
data: data,
dataType: "json",
success: [function(resp){
console.log(resp);
}],
error: function(resp){
console.log(resp);
}
})
});
5. 컨트롤러
@Controller
@RequiredArgsConstructor
@RequestMapping("/account")
public class AccountController {
@Autowired
private JavaMailSender javaMailSender;
@PostMapping("/certifiedEmail")
public void certifiedEmail(@RequestParam("email") String email) {
System.out.println(email);
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setTo(email); // email 주소
simpleMailMessage.setSubject("[포폴리뷰어 인증메일]"); // mail 제목
simpleMailMessage.setText("포폴리뷰어입니다."); // mail 내용
javaMailSender.send(simpleMailMessage);
}
}
6. 결과 확인
반응형
'스프링' 카테고리의 다른 글
Swagger 라이브러리 사용하기(API 명세서 자동화) (0) | 2022.08.18 |
---|---|
@RestController와 @RequestMapping (0) | 2022.08.17 |
스프링부트 웹소켓 실시간 푸시 알림(좋아요, 댓글) (3) | 2022.06.20 |
[Spring] log4jdbc-log4j2 설정하기(콘솔에 sql문 로그 찍기) (0) | 2022.05.25 |
@Controller 와 @RestContoller (@ResponseBody) (0) | 2022.04.12 |