2016-12-29 1 views
0

Java MailApi를 사용하고 있으며 어떤 종류의 e-mail sent successfully 콜백을 추가하고 싶습니다.Java SendMail API에 대한 성공 콜백

나는 SMTPAddressSucceededException에 대해 here을 읽고 다음 mail.smtp.reportsuccess 속성에 해당하는 경우

이 예외는 SendFailedException을 연결됩니다.

public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception, SMTPAddressSucceededException { 
     try { 
      MimeMessage message = new MimeMessage(session); 
      DataHandler handler = new DataHandler(new ByteArrayDataSource(
        body.getBytes(), "text/plain")); 
      message.setSender(new InternetAddress(sender)); 
      message.setSubject(subject); 
      message.setDataHandler(handler); 
      BodyPart messageBodyPart = new MimeBodyPart(); 
      messageBodyPart.setText(body); 
      _multipart.addBodyPart(messageBodyPart); 

      // Put parts in message 
      message.setContent(_multipart); 
      if (recipients.indexOf(',') > 0) 
       message.setRecipients(Message.RecipientType.TO, 
         InternetAddress.parse(recipients)); 
      else 
       message.setRecipient(Message.RecipientType.TO, 
         new InternetAddress(recipients)); 
      Transport.send(message); 
     } catch (SMTPAddressSucceededException e){ 
     Log.i("MAIL", "SMTAddressSucceededException"); 
     } catch (Exception e) { 
     Log.i("MAIL", "sendMail failed"); 
     } 
    } 
    } 

문제을 제공합니다 :

그래서 지금은 두 가지 예외가

보다 일반적인 예외 '의 java.lang.Exception'는 에있다 이미 목록을 던졌습니다

질문 : 긍정적 인 콜백이 부정적 결과의 하위 예외로 보이는 이유는 무엇입니까? 메시지 전송 실패와 성공간에 차이를 만들 수 있습니까?

답변

0

예외없이 Transport.send 메서드에서 반환되면 SMTPAddressSucceededException처럼 메시지가 성공적으로 메일 서버에 배달되었음을 알 수 있습니다. 예외는 경우에 따라 유용 할 수있는 세부 정보를 제공하지만, 원하는 모든 것이 성공을 나타내는 것이라면 메서드에서 반환하는 것이 훨씬 간단합니다. 두 방법 모두 메시지가받는 사람에게 성공적으로 배달되었는지 여부를 알려주지 않습니다.