티스토리 뷰

반응형

회사에서 곧 DB에서 데이터를 추출하여, 메일로 보내는 작업을 할 것 같아서, 한번 미리 간단하게 예습삼아 만들어 봤습니다.

개발 환경은 Springboot + Maven 입니다.

먼저 의존성 설정을 해줍니다.

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>


그리고 properties 설정! 저는 SMTP로 google gmail을 사용하였습니다. 

spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username= gmailId
spring.mail.password= password
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.auth=true

spring-boot를 사용하면 JavaMailSender Bean을 생성할 필요 없이, 자동으로 생성이 됩니다. 그렇기 때문에 properties에 smtp설정만 해주면 됩니다. 일반적인 spring을 사용하신다면 JavaMailSender bean을 생성하여, bean에서 저런 smtp 값들을 설정을 해줘야 합니다. ~.~


@Autowired
JavaMailSender javaMailSender;

//그냥 텍스트 메일
public void sendMail() throws MessagingException {
MimeMessage message = javaMailSender.createMimeMessage();
message.setSubject("hi");
message.setRecipient(Message.RecipientType.TO, new InternetAddress("recipient email"));
message.setText("hi");
message.setSentDate(new Date());
javaMailSender.send(message);
}

//첨부파일 메일
public void sendMailAttachment() throws MessagingException {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setTo("recipient email");
helper.setSubject("hi2");
helper.setText("attachment");

FileSystemResource file
= new FileSystemResource(new File("./testExcel.xls"));
helper.addAttachment("testExcel.xls", file);
javaMailSender.send(message);

}


 보내면, 이렇게 첨부파일과 함께 메일이 발송 됩니다. ~.~







gmail을 smtp로 사용하실 때 설정을 해주셔야 하는 부분들이 있습니다.




POP/IMAP 사용 설정을 해주시면 됩니다.

근데 이렇게 설정을 했는데도, username/password가 틀렸다는 메세지를 받으실 수 있습니다. 저도 이거 떄문에 한참 을 찾았는데...

이럴 때는

보안수준이 낮은 앱에 대해 엑세스를 허용하기를 해주거나

https://support.google.com/accounts/answer/6010255?hl=ko


앱 비밀번호로 로그인하기를 설정하면 됩니다.

https://support.google.com/accounts/answer/185833?p=InvalidSecondFactor&visit_id=636877280055148603-462015041&rd=1


저 같은 경우는 보안수준이 낮은 앱에 대해 엑세스 허용하기를 허용해도.. 계속 설정값이 허용안함으로 돌아가며.. 잘되지 않아서 앱비밀번호 설정을 했습니다.


앱비밀번호 설정은 https://www.lifewire.com/get-a-password-to-access-gmail-by-pop-imap-2-1171882

여기를 참고 하면 될 것 같습니다.

참고로 앱비밀번호를 설정하려면,  사전 작업으로 2단계 인증 사용을 하셔야지 앱 비밀번호 설정이 활성화 됩니다.

그런다음 properties에 가서 spring.mail.password를 앱비밀번호로 변경하면 메일 발송이 잘됩니다.



참고 :

https://www.baeldung.com/spring-email




반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함