2016-12-29 29 views
0

我正在使用Java MailApi,並且我想添加某種e-mail sent successfully回調。成功回撥爲Java SendMail Api

我已閱讀here有關SMTPAddressSucceededException:當 mail.smtp.reportsuccess屬性爲true

此異常鏈斷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一樣。這個例外提供了更多的細節,在某些情況下它可能有用,但如果你所尋找的只是成功的指示,那麼從方法返回就簡單多了。請注意,這兩種方法都不能告訴您郵件是否已成功傳送給收件人。