From 12a46ad0085e48cc37efb3e9886244b3c4c9eed8 Mon Sep 17 00:00:00 2001 From: filipelbc Date: Thu, 25 May 2017 20:44:15 +0200 Subject: [PATCH 1/3] Added support for multiple recipients in MockMail --- .../java/com/mockmock/htmlbuilder/MailListHtmlBuilder.java | 4 +++- .../java/com/mockmock/mail/MockMockMessageHandlerFactory.java | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) 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/MockMockMessageHandlerFactory.java b/src/main/java/com/mockmock/mail/MockMockMessageHandlerFactory.java index 62ce824..a454133 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()); } /** From 9187939b45b0ca0c4b48c177051a86348ef86221 Mon Sep 17 00:00:00 2001 From: filipelbc Date: Thu, 25 May 2017 15:45:41 -0300 Subject: [PATCH 2/3] Better error handling --- src/main/java/com/mockmock/mail/MockMail.java | 8 ++++++ .../mail/MockMockMessageHandlerFactory.java | 26 +++++++++++-------- 2 files changed, 23 insertions(+), 11 deletions(-) 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 a454133..1ea5245 100644 --- a/src/main/java/com/mockmock/mail/MockMockMessageHandlerFactory.java +++ b/src/main/java/com/mockmock/mail/MockMockMessageHandlerFactory.java @@ -104,16 +104,17 @@ public void recipient(String recipient) throws RejectException * @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 +156,9 @@ else if(contentType.matches("text/html.*")) } } } - catch (MessagingException e) + catch (Exception e) { - e.printStackTrace(); + mockMail.setFail("messageException"); } if(settings.getShowEmailInConsole()) @@ -186,6 +187,9 @@ public void done() return; } + if(mockMail.getFail() != null){ + return; + } // set the received date mockMail.setReceivedTime(DateTime.now().getMillis()); @@ -202,7 +206,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 +222,7 @@ protected String convertStreamToString(InputStream is) } catch (IOException e) { - e.printStackTrace(); + throw new MessagingException(); } return stringBuilder.toString(); From 6e7daea01f55eb514c91f9b171c8b14c122040da Mon Sep 17 00:00:00 2001 From: Dominique Comte Date: Mon, 21 Nov 2022 02:58:17 +0100 Subject: [PATCH 3/3] Replaced Exception with the possible exceptions, and added the actual error message to the fail field. --- .../com/mockmock/mail/MockMockMessageHandlerFactory.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/mockmock/mail/MockMockMessageHandlerFactory.java b/src/main/java/com/mockmock/mail/MockMockMessageHandlerFactory.java index 1ea5245..b3c4aa6 100644 --- a/src/main/java/com/mockmock/mail/MockMockMessageHandlerFactory.java +++ b/src/main/java/com/mockmock/mail/MockMockMessageHandlerFactory.java @@ -101,7 +101,6 @@ 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 @@ -156,9 +155,9 @@ else if(contentType.matches("text/html.*")) } } } - catch (Exception e) + catch (MessagingException | IOException e) { - mockMail.setFail("messageException"); + mockMail.setFail(e.getClass().getSimpleName() + ": " + e.getMessage()); } if(settings.getShowEmailInConsole()) @@ -222,7 +221,7 @@ protected String convertStreamToString(InputStream is) throws MessagingException } catch (IOException e) { - throw new MessagingException(); + throw new MessagingException("Error while converting email", e); } return stringBuilder.toString();