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"));
     }
 
     /** */


Reply via email to