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