smtp 스프링 구글 메일 보내기

kwak woojong·2022년 9월 20일
0

코드스테이츠

목록 보기
35/36

smtp 서버를 구축하신다구여?

왜 스프링이랑 구글이 있는데 그런 수고를 하십니까?

구글로 메일 보내봅시다.

1. 의존성 추가

	//메일
	implementation 'org.springframework.boot:spring-boot-starter-mail'

gradle에 의존성 추가

2. yml 파일 수정

spring:
  mail:
    host: smtp.gmail.com
    port: 587
    username: 보낼 이메일
    password: 앱 접근 비번
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true

application.yml도 고친다.

username은 당연히 구글 계정 (네이버면 네이버겠지?)

password는 구글 계정 보안에서 님이 설정한 비번이어야 한다.

구글 앱 비번 설정

보안 메뉴로 가서

앱 비밀번호를 만들자 난 이미 만들어 둠

이렇게 기타 앱으로 선택

이름을 만들어주면 16자리 문자열이 나온다.

그 친구를 yml에 적어주셈


3. 코드 작성

yml로 나는 클라이언트 주소랑 뭐 이것저것 미리 추가 해둠

 @PostMapping("/resetpwd")
    public ResponseEntity resetPwdSendEmail(@RequestBody ResetPwdDto email) throws MessagingException {

        UUID uuid = UUID.randomUUID();
        log.info("비밀번호 재설정을 위한 메일 발송 로직 진입");
        log.info("보낼 메일 주소 : {}", email);
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
        mimeMessageHelper.setFrom(from);
        mimeMessageHelper.setTo(email.getEmail());
        mimeMessageHelper.setSubject("[파킹Go] 비밀번호 재설정 주소 안내");

        StringBuilder sb = new StringBuilder();
        sb.append("비밀번호 재설정을 위한 주소입니다. \n");
        sb.append(secretCode.getClientUrl() + "/resetpwd/" + uuid + "\n");
        sb.append("상기 주소로 접속하시어 비밀번호 재설정을 해주시기 바랍니다.");

        mimeMessageHelper.setText(sb.toString(), true);

        javaMailSender.send(mimeMessage);

        return new ResponseEntity<>(HttpStatus.OK);
    }

아직 미완성 코드임. 실은 저기서 uuid의 유효성 검증을 위한 작업도 해야한다.

일단 저렇게 해서 해봄.

send 시간이 꽤 걸리는 편이라 비동기로 실행하는 것이 좋아보임

아쉽게도 줄 바꿈이 안먹었다. 흠

profile
https://crazyleader.notion.site/Crazykwak-36c7ffc9d32e4e83b325da26ed8d1728?pvs=4<-- 포트폴리오

0개의 댓글