From 83d0b291c147a32db518f41c2daedba85aeb541c Mon Sep 17 00:00:00 2001 From: mebo4b Date: Wed, 30 Sep 2020 10:56:41 +0200 Subject: [PATCH] fix: make sure that exchange service is not closed for send message --- .../api/service/ExchangeMailService.java | 26 ++++++++----------- .../MailControllerTestExchangeIT.java | 2 -- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/src/main/java/de/caritas/cob/mailservice/api/service/ExchangeMailService.java b/src/main/java/de/caritas/cob/mailservice/api/service/ExchangeMailService.java index db39909..11f5e56 100644 --- a/src/main/java/de/caritas/cob/mailservice/api/service/ExchangeMailService.java +++ b/src/main/java/de/caritas/cob/mailservice/api/service/ExchangeMailService.java @@ -1,5 +1,6 @@ package de.caritas.cob.mailservice.api.service; +import static java.util.Objects.isNull; import static org.apache.commons.lang3.StringUtils.isNotBlank; import de.caritas.cob.mailservice.api.exception.ExchangeMailServiceException; @@ -71,29 +72,29 @@ public void prepareAndSendTextMail(String recipient, String subject, String body private void prepareAndSendMail(String recipient, String subject, String bodyText, List templateImages, BodyType bodyType) throws ExchangeMailServiceException { - if (mailSender == null) { + if (isNull(mailSender)) { throw new ExchangeMailServiceException("No sender mail address set"); } - ExchangeService exchangeService = buildExchangeService(); + ExchangeService exchangeService = new ExchangeService(ExchangeVersion.valueOf(exchangeVersion)); + setupExchangeService(exchangeService); EmailMessage msg = buildEmailMessage(subject, bodyText, bodyType, exchangeService); addEmailAttachmentsIfNecessary(templateImages, msg); setMailRecipient(recipient, msg); - // Send mail try { msg.send(); LogService.logDebug("email sent"); } catch (Exception e) { throw new ExchangeMailServiceException("Error while sending email", e); + } finally { + exchangeService.close(); } - - exchangeService.close(); - } - private ExchangeService buildExchangeService() throws ExchangeMailServiceException { - ExchangeService exchangeService = new ExchangeService(ExchangeVersion.valueOf(exchangeVersion)); + private void setupExchangeService(ExchangeService exchangeService) + throws ExchangeMailServiceException { + exchangeService.setCredentials(new WebCredentials(this.exchangeUser, this.exchangePassword)); try { @@ -102,28 +103,23 @@ private ExchangeService buildExchangeService() throws ExchangeMailServiceExcepti exchangeService.close(); throw new ExchangeMailServiceException( String.format("Could not set ExchangeMailService URL %s ", this.exchangeUrl), e); - } finally { - exchangeService.close(); } - return exchangeService; } private EmailMessage buildEmailMessage(String subject, String bodyText, BodyType bodyType, ExchangeService exchangeService) throws ExchangeMailServiceException { - EmailMessage msg; - try { - msg = new EmailMessage(exchangeService); + EmailMessage msg = new EmailMessage(exchangeService); msg.setSubject(subject); MessageBody messageBody = new MessageBody(); messageBody.setBodyType(bodyType); messageBody.setText(bodyText); msg.setBody(messageBody); + return msg; } catch (Exception e) { throw new ExchangeMailServiceException("Could not prepare message data (subject / body)", e); } - return msg; } private void addEmailAttachmentsIfNecessary(List templateImages, EmailMessage msg) diff --git a/src/test/java/de/caritas/cob/mailservice/api/controller/MailControllerTestExchangeIT.java b/src/test/java/de/caritas/cob/mailservice/api/controller/MailControllerTestExchangeIT.java index 3f27305..25e568c 100644 --- a/src/test/java/de/caritas/cob/mailservice/api/controller/MailControllerTestExchangeIT.java +++ b/src/test/java/de/caritas/cob/mailservice/api/controller/MailControllerTestExchangeIT.java @@ -61,6 +61,4 @@ public void sendMail_Should_SendHtmlMail_And_ReturnOk_WhenExchange() throws Exce } - - }