JavaMailSender를 이용해 Email을 보내는 방법에 대해 포스팅하겠습니다 🙂
프로젝트를 진행하며, 회원가입 과정 중 이메일 인증을 위해 인증코드와 이메일을 보내는 기능을 구현해야 했습니다
본 포스팅에서는 인증 코드 내역을 제외한, 이메일을 보내는 방법만을 다루도록 하겠습니다
gmail로 이메일을 보내기 위해서는 2단계 인증이 필요합니다
설정 - 보안 - 2단계 인증
로그인을 하고 휴대전화 인증까지 하면 2단계 인증 사용 설정을 마칠 수 있습니다
이제 앱 비밀번호를 설정하러 가봅시다
app name을 입력하고 만들기를 누르면 자동으로 앱 비밀번호가 생성됩니다
이 앱 비밀번호는 다시 볼 수 없고 yml 설정에서 사용될 것이니 잘 보관해주세요 ‼️
mail 기능을 사용하기 위해 build.gradle에 아래와 같은 코드를 추가해줬습니다
// Email
implementation 'org.springframework.boot:spring-boot-starter-mail'
저는 아래와 같이 yml을 설정해줬습니다
#email
mail:
host: smtp.gmail.com
port: 587
username: 보내는 이메일 주소
password: 앱비밀번호
properties:
mail:
smtp:
auth: true
ssl: false
starttls:
enable: true
required: true
smtp.gmail.com
을 사용해 gmail을 이용할 것임을 명시yml을 설정하면서 정말 많은 Exception을 만났는데요 ..🥲
trouble Shooting 하면서 우선적으로 확인해야 할 부분들에 대해서 정리해두고자 합니다
참고하셔서 한 번에 설정 성공하시길 아자자 👊
starttls
starttsl
로 써서 오류가 났었어요 ㅜㅜ본격적으로 JavaMailSender을 사용해봅시다
EmailService를 생성해 파일을 만들어줍니다
sendEmail
함수 생성SimpleMailMessage
생성javaMailSender.send(message)
를 통해 메세지 전송@Service
@AllArgsConstructor
public class EmailService {
private final JavaMailSender javaMailSender;
public void sendEmail(String to, String subject, String text){
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(to); //보낼 메일 주소
message.setFrom(보내는 이메일 주소);
message.setSubject(subject);
message.setText(text);
javaMailSender.send(message);
}
}
저는 MemberService에서 이메일 서비스를 구현했기 때문에 아래와 같은 코드를 사용했습니다
String subject = "회원가입 인증 번호\n";
String authCode = createCode(); //8글자 랜덤
String text = "인증코드는 " + authCode + " 입니다\n";
//mail 전송
emailService.sendEmail(email, subject, text);
postMan을 사용해 테스트 해보면, 아래와 같이 이메일이 잘 오는 것을 확인할 수 있습니다 😁