JAVA에선 이미 메일을 보낼 수 있게 개발 해놓은 인터페이스가 존재하는데 바로 'JavaMailSender' 이다.
그 중 나는 Gmail SMTP 를 사용해서 이메일을 발송할 것이다.
SMTP ( Simple Mail Transfer Protocol) : 메일 서버에서 인터넷을 통해 보내는 전자 메일에 사용하는 전자 메일 프로토콜
먼저 코드를 작성하기에 앞서 보안 선처리가 필요하다.

구글 로그인 후 계정 > 보안 에 들어간다

2단계 인증 로그인이 완료되었으면

검색에 '앱비밀번호' 를 검색해서 들어가준다

그리고 다음과 같이 앱 비밀번호를 하나 만들어준다
나는 앱 이름을 my_exchange로 설정하였고 설정을 완료하면 다음과 같이 앱 비밀번호를 생성해준다
생성된 비밀번호는 코드에서 사용할 것이므로 따로 기록해놓자 !!
이제 소스코드를 작성해보자
implementation 'org.springframework.boot:spring-boot-starter-mail'
먼저 의존성을 추가해준다
spring:
mail:
default-encoding: UTF-8
host: smtp.gmail.com
port: 587
username: "발신자 이메일"
password: "발급받은 앱 비밀번호"
properties:
mail:
mime:
charset: UTF-8
smtp:
auth: true
starttls:
enable: true
application.yml에 다음과 같이 mail 설정을 추가해주고
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SendEmailRequestDto {
private String address;
private String title;
private String content;
}
메일을 요청하기 위한 dto 도 작성해준다
@Component
@RequiredArgsConstructor
public class SmtpUtils {
@Value("${spring.mail.username}")
private String sender;
private final JavaMailSender emailSender;
public void sendEmail(SendEmailRequestDto sendEmailRequestDto){
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(sender);
message.setTo(sendEmailRequestDto.getAddress());
message.setSubject(sendEmailRequestDto.getTitle());
message.setText(sendEmailRequestDto.getContent());
try{
emailSender.send(message);
}catch (Exception e){
e.printStackTrace();
}
}
}
위와 같이 SmtpUtil을 작성해주면 끝이다
참고로 emil을 보내는 메소드를 호출할 땐 꼭 exception 처리를 해주자 !
이제 실제로 메일을 보내봐야징
@Test
void sendEmail() {
// Given
SendEmailRequestDto sendEmailRequestDto = SendEmailRequestDto.builder()
.address("recipient email address")
.title("test")
.content("test 입니당")
.build();
// When
smtpUtils.sendEmail(sendEmailRequestDto);
}
Junit 테스팅 코드

결과
아주 잘 발송됐다 끄읏 -!