반응형
1. 구글 앱 비밀번호 발급 (구글계정 > 보안 > 2단계인증 > 앱비밀번호 )
yml 혹은 properties 설정
spring :
mail:
host: smtp.gmail.com
port: 587
username: 이메일아이디
password: 앱비밀번호
properties:
mail:
smtp:
auth: true
starttls:
enable: true
@Controller
@RequiredArgsConstructor
public class MailController {
private final MailSenderUtil mailSenderUtil;
@PostMapping("/mail/sendSimpleEmail")
public void execSimpleMail(@RequestBody MailDto mailDto) {
mailSenderUtil.sendSimpleEmail(mailDto);
}
@PostMapping("/mail/sendEmail")
public void execMail(@RequestBody MailDto mailDto) {
mailSenderUtil.sendEmail(mailDto);
}
}
@Component
@RequiredArgsConstructor
public class MailSenderUtil {
private final JavaMailSender javaMailSender;
private static final String ePw = createKey();
/*
* @Description 간단한 text 이메일 전송 예제
* @Param ReqMailModel
* @Return
* @Exception
* */
public void sendSimpleEmail(ReqMailModel mailDto) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(mailDto.getAddress()); //보내는 대상
message.setSubject(mailDto.getTitle()); //제목
message.setText(mailDto.getMessage()); //내용
javaMailSender.send(message);
}
/*
* @Since 2022.09.14
* @Description 이메일 전송 샘플
* @Param ReqMailModel
* @Return
* @Exception
* */
public void sendEmail(ReqMailModel mailDto) {
try {
MimeMessage message = javaMailSender.createMimeMessage();
message.addRecipients(MimeMessage.RecipientType.TO, mailDto.getAddress());//보내는 대상
message.setSubject(mailDto.getTitle()); //제목
message.setText(createHtml(), "utf-8", "html"); //내용
javaMailSender.send(message);
}catch (Exception e){
e.printStackTrace();
}
}
public static String createHtml(){
String msgg="";
msgg+= "<div style='margin:100px;'>";
msgg+= "<h1> 안녕하세요 뇽꾸리 입니다. </h1>";
msgg+= "<br>";
msgg+= "<p>아래 코드를 회원가입 창으로 돌아가 입력해주세요<p>";
msgg+= "<br>";
msgg+= "<p>감사합니다!<p>";
msgg+= "<br>";
msgg+= "<div align='center' style='border:1px solid black; font-family:verdana';>";
msgg+= "<h3 style='color:blue;'>회원가입 인증 코드입니다.</h3>";
msgg+= "<div style='font-size:130%'>";
msgg+= "CODE : <strong>";
msgg+= ePw+"</strong><div><br/> ";
msgg+= "</div>";
return msgg;
}
public static String createKey() {
StringBuffer key = new StringBuffer();
Random rnd = new Random();
for (int i = 0; i < 8; i++) { // 인증코드 8자리
int index = rnd.nextInt(3); // 0~2 까지 랜덤
switch (index) {
case 0:
key.append((char) ((int) (rnd.nextInt(26)) + 97));
// a~z (ex. 1+97=98 => (char)98 = 'b')
break;
case 1:
key.append((char) ((int) (rnd.nextInt(26)) + 65));
// A~Z
break;
case 2:
key.append((rnd.nextInt(10)));
// 0~9
break;
}
}
return key.toString();
}
}
반응형
'springBoot' 카테고리의 다른 글
SpringBoot Docker 로 배포 (0) | 2023.04.15 |
---|---|
[SpringBoot] @requestBody list 혹은 array 받기 (0) | 2022.10.06 |
[Spring Boot] Spring Security + JWT token 로그인 (0) | 2022.09.06 |
[ SpringBoot ] api test , jpa test 코드 (0) | 2022.08.19 |
스프링 서버 경로 구하기 (0) | 2022.06.15 |
댓글