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 ro...@apache.org on 2016/11/23 13:50:27 UTC
[24/46] james-project git commit: JAMES-1854 Rework Delivered-to
header field customization
JAMES-1854 Rework Delivered-to header field customization
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/c85c6a84
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/c85c6a84
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/c85c6a84
Branch: refs/heads/master
Commit: c85c6a843fdbb3df988bd8a267e47fd76064ad88
Parents: 375ef68
Author: Benoit Tellier <bt...@linagora.com>
Authored: Thu Oct 27 16:55:16 2016 +0200
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Nov 18 18:46:46 2016 +0700
----------------------------------------------------------------------
.../transport/mailets/delivery/SieveMailet.java | 64 ++++++--------------
1 file changed, 20 insertions(+), 44 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/c85c6a84/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SieveMailet.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SieveMailet.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SieveMailet.java
index 47c325d..89cd500 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SieveMailet.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SieveMailet.java
@@ -20,14 +20,12 @@ package org.apache.james.transport.mailets.delivery;
import java.io.IOException;
import java.util.Collection;
+import java.util.Collections;
import java.util.Date;
-import java.util.Enumeration;
-import java.util.Iterator;
+import java.util.List;
import java.util.Vector;
-import javax.mail.Header;
import javax.mail.MessagingException;
-import javax.mail.internet.InternetHeaders;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
@@ -194,16 +192,17 @@ public class SieveMailet extends GenericMailet implements Poster {
}
sieveMessage(recipient, mail);
- String s;
- if (sender != null) {
- s = sender.toString();
+ // If no exception was thrown the message was successfully stored in the mailbox
+ log.info("Local delivered mail " + mail.getName() + " sucessfully from " + prettyPrint(sender) + " to " + prettyPrint(recipient)
+ + " in folder " + this.folder);
+ }
+
+ private String prettyPrint(MailAddress mailAddress) {
+ if (mailAddress != null) {
+ return "<" + mailAddress.toString() + ">";
} else {
- s = "<>";
+ return "<>";
}
- // If no exception was thrown the message was successfully stored in the
- // mailbox
- log.info("Local delivered mail " + mail.getName() + " sucessfully from " + s + " to " + recipient.toString()
- + " in folder " + this.folder);
}
@Override
@@ -334,47 +333,25 @@ public class SieveMailet extends GenericMailet implements Poster {
// message
// This only works because there is a placeholder inserted by
// MimeMessageWrapper
- message.setHeader(RFC2822Headers.RETURN_PATH,
- (mail.getSender() == null ? "<>" : "<" + mail.getSender()
- + ">"));
-
- Enumeration headers;
- InternetHeaders deliveredTo = new InternetHeaders();
-
- // Copy any Delivered-To headers from the message
- headers = message
- .getMatchingHeaders(new String[] { DELIVERED_TO });
- while (headers.hasMoreElements()) {
- Header header = (Header) headers.nextElement();
- deliveredTo.addHeader(header.getName(), header.getValue());
- }
+ message.setHeader(RFC2822Headers.RETURN_PATH, prettyPrint(mail.getSender()));
+ List<String> deliveredToHeader = Collections.list(message.getMatchingHeaders(new String[] { DELIVERED_TO }));
+ message.removeHeader(DELIVERED_TO);
- for (Iterator<MailAddress> i = recipients.iterator(); i.hasNext();) {
- MailAddress recipient = i.next();
+ for (MailAddress recipient : recipients) {
try {
// Add qmail's de facto standard Delivered-To header
message.addHeader(DELIVERED_TO, recipient.toString());
-
storeMail(mail.getSender(), recipient, mail);
-
- if (i.hasNext()) {
- // Remove headers but leave all placeholders
- message.removeHeader(DELIVERED_TO);
- headers = deliveredTo.getAllHeaders();
- // And restore any original Delivered-To headers
- while (headers.hasMoreElements()) {
- Header header = (Header) headers.nextElement();
- message.addHeader(header.getName(), header
- .getValue());
- }
- }
+ message.removeHeader(DELIVERED_TO);
} catch (Exception ex) {
log.error("Error while storing mail.", ex);
errors.add(recipient);
}
}
-
+ for (String deliveredTo : deliveredToHeader) {
+ message.addHeader(DELIVERED_TO, deliveredTo);
+ }
if (!errors.isEmpty()) {
// If there were errors, we redirect the email to the ERROR
// processor.
@@ -383,8 +360,7 @@ public class SieveMailet extends GenericMailet implements Poster {
// the sender. Note that this email doesn't include any details
// regarding the details of the failure(s).
// In the future we may wish to address this.
- getMailetContext().sendMail(mail.getSender(), errors,
- mail.getMessage(), Mail.ERROR);
+ getMailetContext().sendMail(mail.getSender(), errors, mail.getMessage(), Mail.ERROR);
}
if (consume) {
// Consume this message
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org