개발자

spring mail 발송실패 메일 처리방법

2024년 05월 27일조회 351

네이버를 통하여 메일을 보내려 합니다 일반적으로 값을 입력하고 유효한 이메일로 보내면 잘 보내지지만 없는 이메일인 경우에는 반송처리되어 오는 메일을 서버가 감지해서 처리할 수 있는 방법은 없을까요?..

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

이양일님의 프로필 사진

안녕하세요! 네이버를 통하여 메일을 보내신다는게 네이버에서 제공하는 smtp 서버로 요청을 하신다는것으로 이해하고 답변 드리겠습니다. SMTP 서버로 메일 발송을 요청할 때 오류가 날 경우 "452 4.5.3 Too many recipients" 와 같이 응답코드 / 상태코드 / 오류 메시지 정보로 오류를 구성하는것으로 알고 있습니다. 따라서 없는 이메일로 요청을 했을 때 전달하는 오류 응답코드를 확인하시고 해당 오류 코드가 발생했을 때 원하시는 처리를 추가로 하면 되지 않을까 생각합니다. 저의 짧은 지식이 조금이나마 도움이 되시길 바라겠습니다.

이승철님의 프로필 사진

이승철

작성자

안동대학교 정보통신공학과/풀스택(백엔드 집중)2024년 05월 27일

유효하지 않는 이메일 경우일때 발송 이후 반송되어오는 경우에도 오류코드가 오나요??

이양일님의 프로필 사진

이양일

NaverCloud 백엔드 개발자2024년 05월 27일

네이버에서 반송해주는 메일이 왔을때 이를 알고 싶으신 거라면 그런 방법이 있는지는 모르겠습니다만 에러코드로 내려주진 않을것 같습니다

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 05월 27일

네, 이메일의 발송 여부를 확인하고 실패한 경우에 대해 처리하는 방법을 강구할 수 있습니다. Spring Mail을 사용하여 메일을 보낼 때 JavaMailSender interface의 send 메소드를 사용합니다. 이 메소드는 문제가 생겼을 때 MailException 을 던집니다. 따라서 try-catch 블록을 사용하여 이 예외를 잡아낼 수 있으며, 그리고 예외가 발생한 경우 원하는 작업을 수행할 수 있습니다. ```java @Autowired private JavaMailSender mailSender; ... try { SimpleMailMessage message = new SimpleMailMessage(); message.setTo("to@example.com"); message.setSubject("Test subject"); message.setText("Test text"); mailSender.send(message); } catch (MailException e) { // 예외 발생시 처리 로직 System.out.println("Failed to send email."); } ``` 하지만 이 방법은 서버에서 메일이 성공적으로 보내졌지만, 유효하지 않은 주소로 인해 반송된 경우는 처리할 수 없습니다. 반송된 이메일을 처리하기 위해서는 다른 접근 방법이 필요합니다. 반송된 이메일을 받기 위한 전용 이메일 주소를 설정하고, 그 주소로 들어오는 메일을 확인하는 POP3 또는 IMAP 클라이언트를 서버에 설치한다면 가능합니다. Java에서는 JavaMail API를 사용하여 POP3 및 IMAP 클라이언트를 작성할 수 있습니다. 즉, Spring Mail로 이메일을 보낼 때 'Return-Path' 또는 'Reply-To' 헤더를 설정하고, 이 헤더에 반송된 메일을 받을 주소를 입력하면 됩니다. 그런 다음 서버에서 이 주소로 들어오는 메일을 확인하고 필요한 작업을 수행합니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!