From c9ca04c8dc216e71304db56d1e54d869408f4958 Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Sat, 31 Jan 2015 12:31:16 +0000 Subject: [PATCH] Merged HEAD-BUG-FIX (5.1/Cloud) to HEAD (5.1/Cloud) 93668: ALF-21099 - MailActionExecutor.java doesn't support sending email by doing CC/BCC git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@94991 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../action/executer/MailActionExecuter.java | 51 +++++++++++++++++++ .../AbstractMailActionExecuterTest.java | 28 ++++++++++ 2 files changed, 79 insertions(+) diff --git a/source/java/org/alfresco/repo/action/executer/MailActionExecuter.java b/source/java/org/alfresco/repo/action/executer/MailActionExecuter.java index 87017ea652..b425719818 100644 --- a/source/java/org/alfresco/repo/action/executer/MailActionExecuter.java +++ b/source/java/org/alfresco/repo/action/executer/MailActionExecuter.java @@ -124,6 +124,8 @@ public class MailActionExecuter extends ActionExecuterAbstractBase public static final String NAME = "mail"; public static final String PARAM_LOCALE = "locale"; public static final String PARAM_TO = "to"; + public static final String PARAM_CC = "cc"; + public static final String PARAM_BCC = "bcc"; public static final String PARAM_TO_MANY = "to_many"; public static final String PARAM_SUBJECT = "subject"; public static final String PARAM_SUBJECT_PARAMS = "subjectParams"; @@ -612,6 +614,53 @@ public class MailActionExecuter extends ActionExecuterAbstractBase // Note: there is no validation on the username to check that it actually is an email address. // TODO Fix this. + + Serializable ccValue = (String)ruleAction.getParameterValue(PARAM_CC); + if(ccValue != null) + { + if (ccValue instanceof String) + { + String cc = (String)ccValue; + if(cc.length() > 0) + { + messageRef[0].setCc(cc); + } + + } + else if (ccValue instanceof List) + { + Lists = (List)ccValue; + messageRef[0].setCc((String[])s.toArray()); + } + else if (ccValue.getClass().isArray()) + { + messageRef[0].setCc((String[])ccValue); + } + + } + Serializable bccValue = (String)ruleAction.getParameterValue(PARAM_BCC); + if(bccValue != null) + { + if (bccValue instanceof String) + { + String bcc = (String)bccValue; + if(bcc.length() > 0) + { + messageRef[0].setBcc(bcc); + } + + } + else if (bccValue instanceof List) + { + Lists = (List)bccValue; + messageRef[0].setBcc((String[])s.toArray()); + } + else if (bccValue.getClass().isArray()) + { + messageRef[0].setCc((String[])bccValue); + } + } + } else { @@ -1491,6 +1540,8 @@ public class MailActionExecuter extends ActionExecuterAbstractBase protected void addParameterDefinitions(List paramList) { paramList.add(new ParameterDefinitionImpl(PARAM_TO, DataTypeDefinition.TEXT, false, getParamDisplayLabel(PARAM_TO))); + paramList.add(new ParameterDefinitionImpl(PARAM_CC, DataTypeDefinition.TEXT, false, getParamDisplayLabel(PARAM_CC))); + paramList.add(new ParameterDefinitionImpl(PARAM_BCC, DataTypeDefinition.TEXT, false, getParamDisplayLabel(PARAM_BCC))); paramList.add(new ParameterDefinitionImpl(PARAM_TO_MANY, DataTypeDefinition.ANY, false, getParamDisplayLabel(PARAM_TO_MANY), true)); paramList.add(new ParameterDefinitionImpl(PARAM_SUBJECT, DataTypeDefinition.TEXT, true, getParamDisplayLabel(PARAM_SUBJECT))); paramList.add(new ParameterDefinitionImpl(PARAM_TEXT, DataTypeDefinition.TEXT, false, getParamDisplayLabel(PARAM_TEXT))); diff --git a/source/test-java/org/alfresco/repo/action/executer/AbstractMailActionExecuterTest.java b/source/test-java/org/alfresco/repo/action/executer/AbstractMailActionExecuterTest.java index 57754bbeff..510dd7eec5 100644 --- a/source/test-java/org/alfresco/repo/action/executer/AbstractMailActionExecuterTest.java +++ b/source/test-java/org/alfresco/repo/action/executer/AbstractMailActionExecuterTest.java @@ -493,6 +493,34 @@ public abstract class AbstractMailActionExecuterTest PERSON_SERVICE.deletePerson(USER_2); } } + + /** + * Test for CC / BCC + * @throws Exception + */ + @Test + public void testSendingToCarbonCopy() throws IOException, MessagingException + { + // PARAM_TO variant + Action mailAction = ACTION_SERVICE.createAction(MailActionExecuter.NAME); + mailAction.setParameterValue(MailActionExecuter.PARAM_FROM, "some.body@example.com"); + mailAction.setParameterValue(MailActionExecuter.PARAM_TO, "some.bodyelse@example.com"); + mailAction.setParameterValue(MailActionExecuter.PARAM_CC, "some.carbon@example.com"); + + + mailAction.setParameterValue(MailActionExecuter.PARAM_SUBJECT, "Testing"); + mailAction.setParameterValue(MailActionExecuter.PARAM_TEMPLATE, "alfresco/templates/mail/test.txt.ftl"); + + mailAction.setParameterValue(MailActionExecuter.PARAM_TEMPLATE_MODEL, (Serializable) getModel()); + + ACTION_SERVICE.executeAction(mailAction, null); + + MimeMessage message = ACTION_EXECUTER.retrieveLastTestMessage(); + Assert.assertNotNull(message); + Assert.assertEquals("Hello Jan 1, 1970", (String) message.getContent()); + Assert.assertEquals("recipents too short", (message.getAllRecipients()).length, 3); + } + /** * Test for MNT-11079