diff --git a/common/source/java/ch/systemsx/cisd/common/mail/IMailClient.java b/common/source/java/ch/systemsx/cisd/common/mail/IMailClient.java index 4abc0f3ebde9a7b98c5d363c9ffbcebe78cf3d03..bfa06bbdd9a5da48ceb876bd272be9568c6e1de9 100644 --- a/common/source/java/ch/systemsx/cisd/common/mail/IMailClient.java +++ b/common/source/java/ch/systemsx/cisd/common/mail/IMailClient.java @@ -16,6 +16,8 @@ package ch.systemsx.cisd.common.mail; +import javax.activation.DataHandler; + import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException; /** @@ -38,4 +40,17 @@ public interface IMailClient public void sendMessage(String subject, String content, String replyToOrNull, From fromOrNull, String... recipients) throws EnvironmentFailureException; + /** + * Sends a mail with given <var>subject</var> and <var>content</var> to given + * <var>recipients</var>, includig the given <var>attachment</var> + * + * @param replyToOrNull reply-to part of the email header. Can be <code>null</code>. + * @param fromOrNull from part of the email header. Can be <code>null</code>. If specified - + * will overwrite the 'from' value specified for the client. + * @param recipients list of recipients (of type <code>Message.RecipientType.TO</code>) + */ + public void sendMessageWithAttachment(final String subject, final String content, + final String filename, final DataHandler attachmentContent, final String replyToOrNull, + final From fromOrNull, final String... recipients) throws EnvironmentFailureException; + } \ No newline at end of file diff --git a/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/StorageProcessor.java b/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/StorageProcessor.java index 2be388247f5f731cb3885fbd73962bfc9a31128c..49407936743429cdbbf7ed0883d3e152292a41bf 100644 --- a/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/StorageProcessor.java +++ b/rtd_cina/source/java/ch/systemsx/cisd/cina/dss/StorageProcessor.java @@ -21,7 +21,6 @@ import java.util.Properties; import ch.systemsx.cisd.cina.dss.info.EntityRegistrationSuccessEmail; import ch.systemsx.cisd.common.mail.IMailClient; -import ch.systemsx.cisd.common.mail.MailClient; import ch.systemsx.cisd.etlserver.AbstractDelegatingStorageProcessor; import ch.systemsx.cisd.etlserver.IStorageProcessor; import ch.systemsx.cisd.etlserver.ITypeExtractor; @@ -75,21 +74,9 @@ public class StorageProcessor extends AbstractDelegatingStorageProcessor emailAddress = defaultEmailAddress; } - // WORKAROUND: The IMailClient interface is used in many places. I added the - // sendMessageWithAttachment method to the MailClient class, but I don't want to make a - // large, global change to introduce the method into the interface, so I do an instanceof - // test here. - if (mailClient instanceof MailClient) - { - ((MailClient) mailClient).sendMessageWithAttachment(successEmail.getSubject(), - successEmail.getContentMimeText(), successEmail - .getContentMimeAttachmentFileName(), successEmail - .getContentMimeAttachmentContent(), null, null, emailAddress); - } else - { - mailClient.sendMessage(successEmail.getSubject(), successEmail.getContentTextOnly(), - null, null, emailAddress); - } + mailClient.sendMessageWithAttachment(successEmail.getSubject(), successEmail + .getContentMimeText(), successEmail.getContentMimeAttachmentFileName(), + successEmail.getContentMimeAttachmentContent(), null, null, emailAddress); return answer; }