メールの送信中に例外の問題に直面しています。ここに私のコードがあります
public static void sendEmail(String email, String subjectBody, String srcAndFile) throws Exception {
System.out.println(srcAndFile);
try {
logger.debug("sending email to: " + email + "with attached file: " + srcAndFile);
Properties props = System.getProperties();
props.put("mail.smtp.host", address);
props.put("mail.smtp.port", "25");
props.put("mail.smtp.auth", "false");
Session session_m = Session.getDefaultInstance(props, null);
MimeMessage message = new MimeMessage(session_m);
message.setFrom (new InternetAddress(sender, sender));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
message.setSubject(subjectBody);
message.setText("Hi");
message.setHeader("Content-Type","text/plain;charset=windows-1251");
Multipart multiPart = new MimeMultipart();
MimeBodyPart messageText = new MimeBodyPart();
messageText.setContent(subjectBody, "text/plain");
multiPart.addBodyPart(messageText);
MimeBodyPart rarAttachment = new MimeBodyPart();
File f = new File(srcAndFile);
FileDataSource rarFile = new FileDataSource(f);
rarAttachment.setDataHandler(new DataHandler(rarFile));
rarAttachment.setFileName(rarFile.getName());
multiPart.addBodyPart(rarAttachment);
message.setContent(multiPart);
SMTPTransport t = (SMTPTransport)session_m.getTransport("smtp");
t.connect(addrress, sender, null);
t.sendMessage(message, message.getAllRecipients());
success = true;
} catch (AddressException e) {
logger.error(e.getMessage());
throw new AddressException("[sendEmail]: Incorrect email address");
} catch (MessagingException e) {
logger.error(e.getMessage());
throw new MessagingException("[sendEmail]: Unable to send email");
} catch (IOException e) {
logger.error(e.getMessage());
throw new IOException("[sendEmail]: Unable to find file to attach");
} catch (Exception e) {
logger.error(e.getMessage());
DBWrapper.processStatusDB("[sendEmail]","failed",e.getMessage());
throw new Exception("[sendEmail]: Error in method " + e.getMessage());
}
DBWrapper.processStatusDB("[sendEmail]","finished","process to send an email with " + FileManager.getFile(srcAndFile) + " has finished properly");
}
いくつかのエラーをキャッチしたいときに問題が発生します。
無効なアドレス
サーバーに接続できません
これらのケースはどちらも (MessagingException e) でキャッチされます。それらを異なる例外に分割する方法はありますか。
問題は、受信者の電子メールアドレスが無効な場合、私のプログラムは他の受信者で続行する必要があるということです. ただし、プログラムがメール サーバーに接続できない場合は、プログラムを終了する必要があります。しかし、私の場合、メールアドレスが無効な場合でも終了します。(MessagingException e) は、コードに示すようにエラーをスローするためです。
INVALID EMAIL ADDRESS をキャッチする他の例外はありますか? (AddressException e) は、無効な電子メールでエラーをキャッチしていません。
ありがとうございました。