개발은 아름다워

[ bible Cash ] stmp를 이용한 서버 종료 이메일 받기 본문

프로젝트

[ bible Cash ] stmp를 이용한 서버 종료 이메일 받기

do_it_zero 2025. 2. 5. 16:54

[ 발단 ]

서버 컴퓨터에 문제가 생겨서 was가 종료 될 경우 알람을 받아야 겠다는 생각이 들었습니다. 

알람을 어떻게하면 무료로 받아 볼 수 있을까 찾아 보던 중 구글의 smtp를 이용해서 서버 종료 알람을 받으면 되겠다고 생각했습니다.

 

[ 구현 ]

- 기본적으로 구글 stmp를 이용하는 방법은 참고 링크를 보시면 되겠습니다. 

- spring-boot-starter-mail 을 추가하여 JavaMailSender를 이용하였습니다.

- @PreDestroy를 활용하여 서버가 종료되기 전에 메일을 보내도록 구현하였습니다.

 

[ 코드 ]

- application.yml

spring:
  mail:
    host: smtp.gmail.com
    port: 587
    username: 구글이메일
    password: 구글 앱 비밀번호 설정시 받은 16자리 비밀번호
    properties:
      mail:
        smtp:
          auth: true
          timeout: 5000
          starttls:
            enable: true

 

DemobibleApplication
@Slf4j
@RequiredArgsConstructor
@SpringBootApplication
public class DemobibleApplication {
    private final JavaMailSender mailSender;

    public static void main(String[] args) {
        SpringApplication.run(DemobibleApplication.class, args);
    }

    @PreDestroy
    public void onShutdown(){
        log.info("🚀 서버 종료 중... 관리자에게 이메일 전송");

        try {
            MimeMessage mimeMessage = mailSender.createMimeMessage();

            String subject = "🔴 서버 종료 알림";
            String body = "Spring Boot 서버가 종료되었습니다.";

            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage);
            mimeMessageHelper.setTo("알람 받을 이메일 주소");
            mimeMessageHelper.setSubject(subject);
            mimeMessageHelper.setText(body);

            // Email 전송
            mailSender.send(mimeMessage);
            log.info("✅ 서버 종료 이메일 전송 완료");
        } catch (MessagingException e){
            log.error("❌ 서버 종료 이메일 전송 실패", e);
        }
    }
}

 

 

 

 

[ 참고 링크 ]

https://velog.io/@byu0hyun/Djagno-Gmail-SMTP-%EC%82%AC%EC%9A%A9