You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2018/10/30 02:40:46 UTC
[06/11] james-project git commit: JAMES-2557 Sieve connector should
allow to post raw emails
JAMES-2557 Sieve connector should allow to post raw emails
This allow:
- Using the more explicit MailImpl builder
- Handling null sender by default
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/aaf17678
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/aaf17678
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/aaf17678
Branch: refs/heads/master
Commit: aaf176780e6b5177acf214ee010ae96820eef1c1
Parents: 8ce3514
Author: Benoit Tellier <bt...@linagora.com>
Authored: Fri Oct 19 11:04:00 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Tue Oct 30 09:39:08 2018 +0700
----------------------------------------------------------------------
.../transport/mailets/jsieve/ActionContext.java | 6 +-----
.../mailets/jsieve/RedirectAction.java | 15 +++++++------
.../transport/mailets/jsieve/RejectAction.java | 22 ++++++++++++--------
.../mailets/jsieve/SieveMailAdapter.java | 5 ++---
.../mailets/jsieve/VacationAction.java | 8 ++++++-
5 files changed, 30 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/aaf17678/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/ActionContext.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/ActionContext.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/ActionContext.java
index 062772e..b85ada7 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/ActionContext.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/ActionContext.java
@@ -19,10 +19,8 @@
package org.apache.james.transport.mailets.jsieve;
import java.time.ZonedDateTime;
-import java.util.Collection;
import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
import org.apache.james.core.MailAddress;
import org.apache.mailet.Mail;
@@ -60,12 +58,10 @@ public interface ActionContext {
/**
* Posts the given mail.
- * @param sender possibly null
- * @param recipients not null
* @param mail not null
* @throws MessagingException when mail cannot be posted
*/
- public void post(MailAddress sender, Collection<MailAddress> recipients, MimeMessage mail) throws MessagingException;
+ public void post(Mail mail) throws MessagingException;
/**
* Gets name (including version) of this server.
http://git-wip-us.apache.org/repos/asf/james-project/blob/aaf17678/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/RedirectAction.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/RedirectAction.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/RedirectAction.java
index 378a77e..1df00ca 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/RedirectAction.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/RedirectAction.java
@@ -18,13 +18,10 @@
****************************************************************/
package org.apache.james.transport.mailets.jsieve;
-import java.util.ArrayList;
-import java.util.Collection;
-
import javax.mail.MessagingException;
-import javax.mail.internet.InternetAddress;
import org.apache.james.core.MailAddress;
+import org.apache.james.server.core.MailImpl;
import org.apache.jsieve.mail.Action;
import org.apache.jsieve.mail.ActionRedirect;
import org.apache.mailet.Mail;
@@ -60,10 +57,12 @@ public class RedirectAction implements MailAction {
public void execute(ActionRedirect anAction, Mail aMail, ActionContext context) throws MessagingException {
ActionUtils.detectAndHandleLocalLooping(aMail, context, "redirect");
- Collection<MailAddress> recipients = new ArrayList<>(1);
- recipients.add(new MailAddress(new InternetAddress(anAction.getAddress())));
- MailAddress sender = aMail.getSender();
- context.post(sender, recipients, aMail.getMessage());
+ context.post(MailImpl.builder()
+ .sender(aMail.getMaybeSender())
+ .recipient(new MailAddress(anAction.getAddress()))
+ .mimeMessage(aMail.getMessage())
+ .build());
+
LOGGER.debug("Redirected Message ID: {} to \"{}\"", aMail.getMessage().getMessageID(), anAction.getAddress());
DiscardAction.removeRecipient(aMail, context);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/aaf17678/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/RejectAction.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/RejectAction.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/RejectAction.java
index ce5c9d5..2e99e3c 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/RejectAction.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/RejectAction.java
@@ -20,8 +20,7 @@ package org.apache.james.transport.mailets.jsieve;
import java.net.InetAddress;
import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Collection;
+import java.util.Arrays;
import javax.mail.Address;
import javax.mail.MessagingException;
@@ -38,12 +37,16 @@ import org.apache.james.mdn.fields.ReportingUserAgent;
import org.apache.james.mdn.modifier.DispositionModifier;
import org.apache.james.mdn.sending.mode.DispositionSendingMode;
import org.apache.james.mdn.type.DispositionType;
+import org.apache.james.server.core.MailImpl;
import org.apache.jsieve.mail.Action;
import org.apache.jsieve.mail.ActionReject;
import org.apache.mailet.Mail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.github.fge.lambdas.Throwing;
+import com.google.common.collect.ImmutableList;
+
/**
* Performs the rejection of a mail, with a reply to the sender.
* <h4>Thread Safety</h4>
@@ -133,13 +136,14 @@ public class RejectAction implements MailAction {
reply.setContent(multipart);
reply.saveChanges();
Address[] recipientAddresses = reply.getAllRecipients();
- if (null != recipientAddresses) {
- Collection<MailAddress> recipients = new ArrayList<>(recipientAddresses.length);
- for (Address recipientAddress : recipientAddresses) {
- recipients.add(new MailAddress(
- (InternetAddress) recipientAddress));
- }
- context.post(null, recipients, reply);
+ if (recipientAddresses != null) {
+ context.post(MailImpl.builder()
+ .recipients(Arrays.stream(recipientAddresses)
+ .map(address -> (InternetAddress) address)
+ .map(Throwing.function(MailAddress::new))
+ .collect(ImmutableList.toImmutableList()))
+ .mimeMessage(reply)
+ .build());
} else {
LOGGER.info("Unable to send reject MDN. Could not determine the recipient.");
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/aaf17678/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/SieveMailAdapter.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/SieveMailAdapter.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/SieveMailAdapter.java
index fa6d851..0eafe2e 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/SieveMailAdapter.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/SieveMailAdapter.java
@@ -21,7 +21,6 @@ package org.apache.james.transport.mailets.jsieve;
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
@@ -373,8 +372,8 @@ public class SieveMailAdapter implements MailAdapter, EnvelopeAccessors, ActionC
}
@Override
- public void post(MailAddress sender, Collection<MailAddress> recipients, MimeMessage mail) throws MessagingException {
- getMailetContext().sendMail(sender, recipients, mail);
+ public void post(Mail mail) throws MessagingException {
+ getMailetContext().sendMail(mail);
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/aaf17678/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationAction.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationAction.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationAction.java
index b3847b9..80b772d 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationAction.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationAction.java
@@ -27,6 +27,7 @@ import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
import org.apache.james.core.MailAddress;
+import org.apache.james.server.core.MailImpl;
import org.apache.jsieve.mail.Action;
import org.apache.jsieve.mail.optional.ActionVacation;
import org.apache.mailet.Mail;
@@ -64,7 +65,12 @@ public class VacationAction implements MailAction {
.reason(actionVacation.getReason())
.subject(actionVacation.getSubject())
.build();
- context.post(vacationReply.getSender(), vacationReply.getRecipients(), vacationReply.getMimeMessage());
+
+ context.post(MailImpl.builder()
+ .sender(vacationReply.getSender())
+ .recipients(vacationReply.getRecipients())
+ .mimeMessage(vacationReply.getMimeMessage())
+ .build());
}
private boolean isStillInVacation(ActionVacation actionVacation, int dayDifference) {
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org