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]