diff --git a/src/main/java/com/mockmock/htmlbuilder/MailListHtmlBuilder.java b/src/main/java/com/mockmock/htmlbuilder/MailListHtmlBuilder.java index e2e7194..b11175c 100644 --- a/src/main/java/com/mockmock/htmlbuilder/MailListHtmlBuilder.java +++ b/src/main/java/com/mockmock/htmlbuilder/MailListHtmlBuilder.java @@ -35,6 +35,7 @@ public String build() output.append(" From\n"); output.append(" To\n"); output.append(" Subject\n"); + output.append(" Details\n"); output.append(" Action\n"); output.append(" \n"); output.append(" \n"); @@ -77,7 +78,8 @@ private String buildMailRow(MockMail mail) "\n" + " " + fromOutput + "\n" + " " + toOutput + "\n" + - " " + subjectOutput + "\n" + + " " + subjectOutput + "\n" + + " Details\n" + " Delete\n" + ""; } diff --git a/src/main/java/com/mockmock/mail/MockMail.java b/src/main/java/com/mockmock/mail/MockMail.java index 32739d7..7b51434 100644 --- a/src/main/java/com/mockmock/mail/MockMail.java +++ b/src/main/java/com/mockmock/mail/MockMail.java @@ -13,6 +13,14 @@ public class MockMail implements Comparable private String rawMail; private MimeMessage mimeMessage; private long receivedTime; + private String fail; + + public String getFail(){ + return fail; + } + public void setFail(String fail){ + this.fail = fail; + } public long getId() { diff --git a/src/main/java/com/mockmock/mail/MockMockMessageHandlerFactory.java b/src/main/java/com/mockmock/mail/MockMockMessageHandlerFactory.java index 62ce824..b3c4aa6 100644 --- a/src/main/java/com/mockmock/mail/MockMockMessageHandlerFactory.java +++ b/src/main/java/com/mockmock/mail/MockMockMessageHandlerFactory.java @@ -21,7 +21,7 @@ @Service public class MockMockMessageHandlerFactory implements MessageHandlerFactory { - private EventBus eventBus; + private final EventBus eventBus; private Settings settings; @Autowired @@ -57,7 +57,7 @@ public MockMockHandler(MessageContext context) this.mockMail = new MockMail(); // give the mockmail a unique id (currently its just a timestamp in ms) - this.mockMail.setId(DateTime.now().getMillis()); + this.mockMail.setId(System.nanoTime()); } /** @@ -101,19 +101,19 @@ public void recipient(String recipient) throws RejectException * Called when the DATA part of the SMTP exchange begins. * @param data InputStream * @throws RejectException never - * @throws IOException if there is a problem getting the message contents */ @Override - public void data(InputStream data) throws RejectException, IOException + public void data(InputStream data) throws RejectException { - String rawMail = this.convertStreamToString(data); - mockMail.setRawMail(rawMail); - - Session session = Session.getDefaultInstance(new Properties()); - InputStream is = new ByteArrayInputStream(rawMail.getBytes()); - + try { + String rawMail = this.convertStreamToString(data); + mockMail.setRawMail(rawMail); + + Session session = Session.getDefaultInstance(new Properties()); + InputStream is = new ByteArrayInputStream(rawMail.getBytes()); + MimeMessage message = new MimeMessage(session, is); mockMail.setSubject(message.getSubject()); mockMail.setMimeMessage(message); @@ -155,9 +155,9 @@ else if(contentType.matches("text/html.*")) } } } - catch (MessagingException e) + catch (MessagingException | IOException e) { - e.printStackTrace(); + mockMail.setFail(e.getClass().getSimpleName() + ": " + e.getMessage()); } if(settings.getShowEmailInConsole()) @@ -186,6 +186,9 @@ public void done() return; } + if(mockMail.getFail() != null){ + return; + } // set the received date mockMail.setReceivedTime(DateTime.now().getMillis()); @@ -202,7 +205,7 @@ public void done() * @param is InputStream * @return String */ - protected String convertStreamToString(InputStream is) + protected String convertStreamToString(InputStream is) throws MessagingException { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); StringBuilder stringBuilder = new StringBuilder(); @@ -218,7 +221,7 @@ protected String convertStreamToString(InputStream is) } catch (IOException e) { - e.printStackTrace(); + throw new MessagingException("Error while converting email", e); } return stringBuilder.toString();