구글 계정만 있으면 Gmail SMTP Server를 통해 무료로 이메일을 전송할 수 있다.
springboot를 쓸려면 다음과 같이 설정과 지메일 send code를 사용해야 한다. 간단한 테스트를 위해 작성하면 다음과 같이 작성하면 된다.
로그인 계정 -> 보안 -> 보안 수준이 낮은 앱의 액세스(사용!) // 아예 아래페이지에서! 구글 계쩡 설정가보면 찾을 수가 없음!
https://myaccount.google.com/lesssecureapps

그리고 아래 앱 비밀번호 설정 으로 들어가,
앱선택, 기기선택 후 앱 비빌번호를 생성된다.
생선된 앱 비밀번호는 springboot 설정시 적어주어야 한다.

smtp 메일을 보낼려면,
✅ 2단계 인증 로그인까지 진행해야 합니다.
✅ 구글에서 앱 비밀번호를 생성해주어야 한다.
https://myaccount.google.com/apppasswords

// SMTP & Email Templates
implementation 'org.springframework.boot:spring-boot-starter-mail'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
✅ 구글 앱비밀번호 -> {gmail 보안 앱 비밀번호}에 넣어주면 됩니다!
server:
mail:
host: smtp.gmail.com
port: 587
username: {user gmail}
password: {gmail 보안 앱 비밀번호}
properties:
mail:
smtp:
starttls:
enable: true
@Slf4j
@Component
@RequiredArgsConstructor
public class MailSendService {
private final JavaMailSender javaMailSender;
public boolean sendMail(String mail, String subject, String text) {
boolean result = false;
MimeMessagePreparator msg = new MimeMessagePreparator() {
@Override
public void prepare(MimeMessage mimeMessage) throws Exception {
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
mimeMessageHelper.setTo(mail);
mimeMessageHelper.setSubject(subject);
mimeMessageHelper.setText(text, true);
}
};
try {
javaMailSender.send(msg);
log.info("javaMailSender.send");
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
@RestController
@RequiredArgsConstructor
public class MailController {
private final MailSendService mailSendService;
@GetMapping("/mail/send")
public void sendMail(String email) {
mailSendService.sendMail("ehtjd33@gmail.com", "제목입니다.", "테스트입니다.");
}
}