Author: dion
Date: Thu Feb 22 16:10:21 2007
New Revision: 510725

URL: http://svn.apache.org/viewvc?view=rev&rev=510725
Log:
Apply EMAIL-1 Patch. Thanks Ben.

Modified:
    
jakarta/commons/proper/email/trunk/src/java/org/apache/commons/mail/Email.java
    
jakarta/commons/proper/email/trunk/src/test/org/apache/commons/mail/EmailTest.java

Modified: 
jakarta/commons/proper/email/trunk/src/java/org/apache/commons/mail/Email.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/email/trunk/src/java/org/apache/commons/mail/Email.java?view=diff&rev=510725&r1=510724&r2=510725
==============================================================================
--- 
jakarta/commons/proper/email/trunk/src/java/org/apache/commons/mail/Email.java 
(original)
+++ 
jakarta/commons/proper/email/trunk/src/java/org/apache/commons/mail/Email.java 
Thu Feb 22 16:10:21 2007
@@ -337,6 +337,18 @@
                     this.charset = aContentType.substring(charsetPos);
                 }
             }
+            else
+            {
+                // use the default charset, if one exists, for messages
+                // whose content-type is some form of text.
+                if (this.contentType.startsWith("text/") && 
EmailUtils.isNotEmpty(this.charset))
+                {
+                    StringBuffer contentTypeBuf = new 
StringBuffer(this.contentType);
+                    contentTypeBuf.append(strMarker);
+                    contentTypeBuf.append(this.charset);
+                    this.contentType = contentTypeBuf.toString();
+                }
+            }            
         }
     }
 

Modified: 
jakarta/commons/proper/email/trunk/src/test/org/apache/commons/mail/EmailTest.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/email/trunk/src/test/org/apache/commons/mail/EmailTest.java?view=diff&rev=510725&r1=510724&r2=510725
==============================================================================
--- 
jakarta/commons/proper/email/trunk/src/test/org/apache/commons/mail/EmailTest.java
 (original)
+++ 
jakarta/commons/proper/email/trunk/src/test/org/apache/commons/mail/EmailTest.java
 Thu Feb 22 16:10:21 2007
@@ -29,6 +29,7 @@
 import javax.mail.Authenticator;
 import javax.mail.Session;
 import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeMultipart;
 import javax.mail.internet.ParseException;
 
@@ -1341,4 +1342,70 @@
         assertEquals(strPassword, this.email.getPopPassword());
     }
 
+    //
+    // Test: When Email.setCharset() is called, a subsequent setContent()
+    // should use that charset for text content types unless overridden
+    // by the contentType parameter.
+    // See https://issues.apache.org/jira/browse/EMAIL-1.
+    //
+
+    // Case 1:
+    // Setting a default charset results in adding that charset info to
+    // to the content type of a text/based content object.
+    public void testDefaultCharsetAppliesToTextContent()
+        throws Exception
+    {
+        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");
+
+        this.email.setCharset("ISO-8859-1");
+        this.email.setContent("test content", "text/plain");
+        this.email.buildMimeMessage();
+        MimeMessage msg = this.email.getMimeMessage();
+        msg.saveChanges();
+        assertEquals("text/plain; charset=ISO-8859-1", msg.getContentType());
+    }
+
+    // Case 2:
+    // A default charset is overridden by an explicitly specified
+    // charset in setContent().
+    public void testDefaultCharsetCanBeOverriddenByContentType()
+        throws Exception
+    {
+        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");
+
+        this.email.setCharset("ISO-8859-1");
+        this.email.setContent("test content", "text/plain; charset=US-ASCII");
+        this.email.buildMimeMessage();
+        MimeMessage msg = this.email.getMimeMessage();
+        msg.saveChanges();
+        assertEquals("text/plain; charset=US-ASCII", msg.getContentType());
+    }
+
+    // Case 3:
+    // A non-text content object ignores a default charset entirely.
+    public void testDefaultCharsetIgnoredByNonTextContent()
+        throws Exception
+    {
+        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");
+
+        this.email.setCharset("ISO-8859-1");
+        this.email.setContent("test content", "application/octet-stream");
+        this.email.buildMimeMessage();
+        MimeMessage msg = this.email.getMimeMessage();
+        msg.saveChanges();
+        assertEquals("application/octet-stream", msg.getContentType());
+    }    
+    
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to