구글 계정만 있으면 Gmail SMTP Server를 통해 무료로 이메일을 전송할 수 있다.
springboot를 쓸려면 다음과 같이 설정
과 지메일 send code
를 사용해야 한다. 간단한 테스트를 위해 작성하면 다음과 같이 작성하면 된다.
로그인 계정 -> 보안 -> 보안 수준이 낮은 앱의 액세스(사용!) // 아예 아래페이지에서! 구글 계쩡 설정가보면 찾을 수가 없음!
https://myaccount.google.com/lesssecureapps
그리고 아래 앱 비밀번호 설정
으로 들어가,
앱선택, 기기선택 후 앱 비빌번호를 생성된다.
생선된 앱 비밀번호는 springboot 설정시 적어주어야 한다.
// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-mail
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-mail', version: '2.6.7'
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", "제목입니다.", "테스트입니다.");
}
}