![[Spring] 메일 전송 1편, JavaMailSender](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkohVN%2Fbtsm1TxnADW%2FfAe1i6Vu21kdNW5mbsG9D0%2Fimg.png)
[Spring] 메일 전송 1편, JavaMailSenderlegacy/Spring2023. 7. 10. 00:43
Table of Contents
본 글은 스프링부트의 구글 smtp 설정 방법입니다.
1. 앱 비밀번호 생성
비밀번호를 기억하고 있어야 한다.
2번 사진을 보면 사용 방법에 비밀번호를 교체하라고 나오는데 절대로 교체해서는 안된다. 저거 따라 했다가 계속 오류 나서 시간만 날렸다. 생성된 비밀번호를 메모장이든 어디든 간에 저장하자.
2. 스프링부트 설정
application.properties에 다음 정보를 저장한다. 구글 이메일하고 앱 비밀번호만 본인의 것으로 수정하면 된다.
아래 정보를 입력하면 자동으로 JavaMailSender의 구현체인 JavaMailSenderImpl 클래스가 bean으로 등록된다.
# JavaMailSender 자동으로 빈 등록
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=구글 이메일
spring.mail.password=앱 비밀번호
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.auth=true
3. 메일 정보 생성
MailDto 클래스
@Data
public class MailDto {
private String address; // 상대방 주소
private String title; // 메일 제목
private String message; // 메일 메시지
}
MailService 클래스
@Service
public class MailService {
private JavaMailSender mailSender;
@Autowired
public MailService(JavaMailSender mailSender) {
this.mailSender = mailSender;
}
public void mailSend(MailDto mailDto) {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setTo(mailDto.getAddress());
simpleMailMessage.setSubject(mailDto.getTitle());
simpleMailMessage.setText(mailDto.getMessage());
mailSender.send(simpleMailMessage);
}
}
Controller 클래스
@RestController
public class MailController {
private MailService mailService;
@Autowired
public MailController(MailService mailService) {
this.mailService = mailService;
}
@GetMapping("/send")
public String mailSend(@RequestParam(value = "address", required = false) String address) {
MailDto mailDto = new MailDto();
mailDto.setAddress(address);
mailDto.setTitle("subject test");
mailDto.setMessage("content test");
mailService.mailSend(mailDto);
return "ok";
}
}
4. 테스트
결론
이 글에서 가장 중요한 것은 앱 비밀번호를 절대로 변경해서는 안됩니다!!!
1편은 메일이 정상적으로 보내지는지 테스트용이고 다음편에는 자동화하는 방법을 소개하겠습니다.