Google SMTP를 이용해 여러개의 첨부파일을 포함한 메일 보내기를 구현하고자 한다.
구글 계정에 대한 설정은 아래 참고사이트에서 참고하길 바란다.
구글 SMTP를
개발환경
Springboot + JPA + gradle
implementation 'org.springframework.boot:spring-boot-starter-mail:2.3.11.RELEASE'
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Setter
public class MailDto {
private String position;
private String name;
private String phone;
private String email;
private List<MultipartFile> multipartFile;
}
컨트롤러에서 @ModelAttribute로 받아야 하기 때문에 Setter가 필요하다. List multipartFile를 제외한 나머지 부분은 원하는 request에 따라 자유롭게 하면 된다.
@PostMapping("/mail")
public ResponseDto<?> execMail(@ModelAttribute MailDto mailDto) {
return mailService.sendMail(mailDto);
}
@RequiredArgsConstructor
@Service
public class MailService {
private final JavaMailSender javaMailSender;
public ResponseDto<?> sendMail(MailDto mailDto) {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
try {
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8"); // use multipart (true)
mimeMessageHelper.setSubject("subject");
mimeMessageHelper.setFrom(mailDto.getEmail());
mimeMessageHelper.setTo("tjddnths0223@naver.com");
mimeMessageHelper.setText("text");
if(!CollectionUtils.isEmpty(mailDto.getMultipartFile())) {
for(MultipartFile multipartFile: mailDto.getMultipartFile()) {
mimeMessageHelper.addAttachment(multipartFile.getOriginalFilename(), multipartFile);
}
}
javaMailSender.send(mimeMessage);
return ResponseDto.success();
} catch (Exception e) {
e.printStackTrace();
return ResponseDto.fail("FAIL EMAIL", "이메일 전송 실패");
}
}
}
참고
https://earth-95.tistory.com/134
https://born2bedeveloper.tistory.com/68