You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2023/06/14 01:48:39 UTC

[james-project] 01/07: JAMES-3914 Sieve FileIntoAction: support several recipients

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 46a441241ddfaeb8e52565d38a768e3a8cf48127
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Jun 12 15:02:49 2023 +0700

    JAMES-3914 Sieve FileIntoAction: support several recipients
---
 .../transport/mailets/jsieve/FileIntoAction.java   | 25 +++++++++-------------
 .../mailets/delivery/SieveIntegrationTest.java     | 13 +++++++++++
 2 files changed, 23 insertions(+), 15 deletions(-)

diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/FileIntoAction.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/FileIntoAction.java
index a42c4e6f66..fe9a770840 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/FileIntoAction.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/FileIntoAction.java
@@ -20,7 +20,6 @@ package org.apache.james.transport.mailets.jsieve;
 
 import javax.mail.MessagingException;
 
-import org.apache.james.core.MailAddress;
 import org.apache.jsieve.mail.Action;
 import org.apache.jsieve.mail.ActionFileInto;
 import org.apache.mailet.Mail;
@@ -64,26 +63,22 @@ public class FileIntoAction implements MailAction {
      * When IMAP support is added to James, it will be possible to support
      * sub-folders of <code>INBOX</code> fully.
      * </p>
-     * 
-     * @param anAction
-     * @param aMail
+     *
      * @param context not null
-     * @throws MessagingException
      */
     public void execute(ActionFileInto anAction, Mail aMail, final ActionContext context) throws MessagingException {
-        String destinationMailbox = anAction.getDestination();
-        MailAddress recipient;
-        recipient = ActionUtils.getSoleRecipient(aMail);
-
-        if (!(destinationMailbox.length() > 0
-            && destinationMailbox.charAt(0) == HIERARCHY_DELIMITER)) {
-            destinationMailbox =  HIERARCHY_DELIMITER + destinationMailbox;
-        }
-
+        String destinationMailbox = getDestinationMailbox(anAction);
         String mailbox = destinationMailbox.replace(HIERARCHY_DELIMITER, '/');
-        String url = "mailbox://" + recipient.asString() + mailbox;
+        String url = "mailbox://" + context.getRecipient().asString() + mailbox;
 
         context.post(url, aMail);
         LOGGER.debug("Filed Message ID: {} into destination: \"{}\"", aMail.getMessage().getMessageID(), destinationMailbox);
     }
+
+    private String getDestinationMailbox(ActionFileInto anAction) {
+        if (!(anAction.getDestination().length() > 0 && anAction.getDestination().charAt(0) == HIERARCHY_DELIMITER)) {
+            return HIERARCHY_DELIMITER + anAction.getDestination();
+        }
+        return anAction.getDestination();
+    }
 }
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
index 92e525aa80..742326c134 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
@@ -182,6 +182,19 @@ class SieveIntegrationTest {
         assertThatAttribute(mail.getAttribute(ATTRIBUTE_NAME)).isEqualTo(ATTRIBUTE_INBOX_ANY);
     }
 
+    @Test
+    void shouldSupportSeveralRecipientsWhenFileInto() throws Exception {
+        prepareTestUsingScript("org/apache/james/transport/mailets/delivery/fileinto.script");
+        when(usersRepository.getUsername(new MailAddress("other@domain.tld"))).thenReturn(Username.of("other@domain.tld"));
+        when(resourceLocator.get(new MailAddress("other@domain.tld"))).thenThrow(new ScriptNotFoundException());
+
+        FakeMail mail = createMail();
+        mail.setRecipients(ImmutableList.of(new MailAddress(RECEIVER_DOMAIN_COM), new MailAddress("other@domain.tld")));
+        testee.service(mail);
+
+        assertThatAttribute(mail.getAttribute(ATTRIBUTE_NAME)).isEqualTo(ATTRIBUTE_INBOX_ANY);
+    }
+
     @Test
     void allOfAllFalseScriptShouldWork() throws Exception {
         prepareTestUsingScript("org/apache/james/transport/mailets/delivery/allofAllFalse.script");


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org