From bb799329c8214728d5df941abbfd32ab5d398587 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Mon, 13 Aug 2007 14:00:16 +0000 Subject: [PATCH] introduce an IMailClient interface translate a MessageException into an EnvironmentFailureException SVN: 1336 --- .../cisd/common/mail/IMailClient.java | 36 +++++++++++++++++++ .../systemsx/cisd/common/mail/MailClient.java | 23 ++++++++---- 2 files changed, 52 insertions(+), 7 deletions(-) create mode 100644 common/source/java/ch/systemsx/cisd/common/mail/IMailClient.java diff --git a/common/source/java/ch/systemsx/cisd/common/mail/IMailClient.java b/common/source/java/ch/systemsx/cisd/common/mail/IMailClient.java new file mode 100644 index 00000000000..5dba4a0629c --- /dev/null +++ b/common/source/java/ch/systemsx/cisd/common/mail/IMailClient.java @@ -0,0 +1,36 @@ +/* + * Copyright 2007 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.common.mail; + +import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException; + +/** + * + * + * @author Franz-Josef Elmer + */ +public interface IMailClient +{ + + /** + * Sends a mail with given <var>subject</var> and <var>content</var> to given <var>recipients</var>. + * + * @param recipients list of recipients (of type <code>Message.RecipientType.TO</code>) + */ + public void sendMessage(String subject, String content, String... recipients) throws EnvironmentFailureException; + +} \ No newline at end of file diff --git a/common/source/java/ch/systemsx/cisd/common/mail/MailClient.java b/common/source/java/ch/systemsx/cisd/common/mail/MailClient.java index d72cf6cd608..f6d0347c618 100644 --- a/common/source/java/ch/systemsx/cisd/common/mail/MailClient.java +++ b/common/source/java/ch/systemsx/cisd/common/mail/MailClient.java @@ -31,6 +31,7 @@ import javax.mail.internet.MimeMessage; import org.apache.log4j.Logger; +import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException; import ch.systemsx.cisd.common.logging.LogCategory; import ch.systemsx.cisd.common.logging.LogFactory; @@ -42,7 +43,7 @@ import ch.systemsx.cisd.common.logging.LogFactory; * * @author Christian Ribeaud */ -public final class MailClient extends Authenticator +public final class MailClient extends Authenticator implements IMailClient { /** This system property is not supported by the <i>JavaMail API</i> */ @@ -139,7 +140,8 @@ public final class MailClient extends Authenticator * * @param recipients list of recipients (of type <code>Message.RecipientType.TO</code>) */ - public final void sendMessage(String subject, String content, String... recipients) throws MessagingException + public final void sendMessage(String subject, String content, String... recipients) + throws EnvironmentFailureException { if (operationLog.isInfoEnabled()) { @@ -152,11 +154,18 @@ public final class MailClient extends Authenticator internetAddresses[i] = createInternetAddress(recipients[i]); } MimeMessage msg = new MimeMessage(createSession()); - msg.setFrom(createInternetAddress(from)); - msg.addRecipients(Message.RecipientType.TO, internetAddresses); - msg.setSubject(subject); - msg.setText(content); - Transport.send(msg); + try + { + msg.setFrom(createInternetAddress(from)); + msg.addRecipients(Message.RecipientType.TO, internetAddresses); + msg.setSubject(subject); + msg.setText(content); + Transport.send(msg); + } catch (MessagingException ex) + { + throw new EnvironmentFailureException("Sending e-mail with subject '" + subject + "' to recipients " + + Arrays.asList(recipients) + " failed. Reason: " + ex, ex); + } } // -- GitLab