Author: tn
Date: Thu Feb 21 12:03:22 2013
New Revision: 1448617
URL: http://svn.apache.org/r1448617
Log:
[EMAIL-124] Header values are not folded twice anymore. Thanks to Stefan
Schueffler.
Modified:
commons/proper/email/trunk/src/changes/changes.xml
commons/proper/email/trunk/src/main/java/org/apache/commons/mail/Email.java
commons/proper/email/trunk/src/test/java/org/apache/commons/mail/EmailTest.java
Modified: commons/proper/email/trunk/src/changes/changes.xml
URL:
http://svn.apache.org/viewvc/commons/proper/email/trunk/src/changes/changes.xml?rev=1448617&r1=1448616&r2=1448617&view=diff
==============================================================================
--- commons/proper/email/trunk/src/changes/changes.xml (original)
+++ commons/proper/email/trunk/src/changes/changes.xml Thu Feb 21 12:03:22 2013
@@ -22,7 +22,11 @@
</properties>
<body>
- <release version="1.4" date="TBD">
+ <release version="1.3.1" date="TBD">
+ <action dev="tn" type="fix" issue="EMAIL-124" date="2013-02-21"
due-to="Stefan Schueffler">
+ Header values are not folded twice anymore. The actual encoding and
folding is
+ now only performed in Email.buildMimeMessage().
+ </action>
</release>
<release version="1.3" date="2013-01-10">
<action dev="tn" type="fix" issue="EMAIL-101" date="2012-12-09"
due-to="Andrew Starodub">
Modified:
commons/proper/email/trunk/src/main/java/org/apache/commons/mail/Email.java
URL:
http://svn.apache.org/viewvc/commons/proper/email/trunk/src/main/java/org/apache/commons/mail/Email.java?rev=1448617&r1=1448616&r2=1448617&view=diff
==============================================================================
--- commons/proper/email/trunk/src/main/java/org/apache/commons/mail/Email.java
(original)
+++ commons/proper/email/trunk/src/main/java/org/apache/commons/mail/Email.java
Thu Feb 21 12:03:22 2013
@@ -1171,8 +1171,7 @@ public abstract class Email
while (iterKeyBad.hasNext())
{
Map.Entry<String, String> entry = iterKeyBad.next();
- String name = entry.getKey();
- this.headers.put(name, createFoldedHeaderValue(name,
entry.getValue()));
+ this.headers.put(entry.getKey(), entry.getValue());
}
}
@@ -1195,7 +1194,7 @@ public abstract class Email
throw new IllegalArgumentException("value can not be null");
}
- this.headers.put(name, createFoldedHeaderValue(name, value));
+ this.headers.put(name, value);
}
/**
Modified:
commons/proper/email/trunk/src/test/java/org/apache/commons/mail/EmailTest.java
URL:
http://svn.apache.org/viewvc/commons/proper/email/trunk/src/test/java/org/apache/commons/mail/EmailTest.java?rev=1448617&r1=1448616&r2=1448617&view=diff
==============================================================================
---
commons/proper/email/trunk/src/test/java/org/apache/commons/mail/EmailTest.java
(original)
+++
commons/proper/email/trunk/src/test/java/org/apache/commons/mail/EmailTest.java
Thu Feb 21 12:03:22 2013
@@ -21,6 +21,7 @@ import java.io.UnsupportedEncodingExcept
import java.nio.charset.Charset;
import java.nio.charset.IllegalCharsetNameException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Hashtable;
@@ -28,6 +29,8 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
+import java.util.StringTokenizer;
+
import javax.mail.Authenticator;
import javax.mail.Session;
import javax.mail.internet.AddressException;
@@ -1098,11 +1101,35 @@ public class EmailTest extends BaseEmail
assertEquals(ht, this.email.getHeaders());
}
- public void testFoldingHeaders()
+ public void testFoldingHeaders() throws Exception
{
- this.email.addHeader("X-LongHeader", "1234567890 1234567890 123456789
01234567890 123456789 0123456789 01234567890 01234567890");
+ this.email.setHostName(this.strTestMailServer);
+ this.email.setSmtpPort(this.getMailServerPort());
+ this.email.setFrom("[email protected]");
+ this.email.addTo("[email protected]");
+ this.email.setSubject("test mail");
+
+ final String headerValue = "1234567890 1234567890 123456789
01234567890 123456789 0123456789 01234567890 01234567890";
+ this.email.addHeader("X-LongHeader", headerValue);
+
assertTrue(this.email.getHeaders().size() == 1);
-
assertTrue(this.email.getHeaders().get("X-LongHeader").toString().indexOf("\r\n")
>= 0);
+ // the header should not yet be folded -> will be done by
buildMimeMessage()
+
assertTrue(this.email.getHeaders().get("X-LongHeader").toString().indexOf("\r\n")
== -1);
+
+ this.email.buildMimeMessage();
+
+ MimeMessage msg = this.email.getMimeMessage();
+ msg.saveChanges();
+
+ String[] values = msg.getHeader("X-LongHeader");
+ assertEquals(1, values.length);
+
+ // the header should be split in two lines
+ String[] lines = values[0].split("\\r\\n");
+ assertEquals(2, lines.length);
+
+ // there should only be one line-break
+ assertTrue(values[0].indexOf("\n") == values[0].lastIndexOf("\n"));
}
/** */