Next Release
------------

Mime4J storage contains support for encrypted storage through the standard Java cryptography
API. When used in conjunction with a JRE with strong cryptography enabled, this library will
use strong cryptography. See README.

Notes
-----

 * The method decodeBaseQuotedPrintable() of class o.a.j.mime4j.codec.DecoderUtil has been renamed
   in decodeQuotedPrintable(). Please adjust your code accordingly in case you use this method.

Release 0.6
-------------------

Mime4J is a flexible MIME parsing library written in Java. SAX, DOM and pull parsing styles are 
supported.

The 0.6 release brings another round of API enhancements and performance optimizations. There has 
been a number of notable improvements in the DOM support. MIME stream parser is expected to be
50% faster when line counting is disabled. Please also note that as of this release Mime4j 
requires a Java 1.5 compatible runtime.

Notes
-----

 * Mime4j API is still considered unstable and is likely to change in future releases
 * The DOM API has been now been comprehensively refactored and the known limitations 
   addressed. Please report any remaining issues to 
   https://issues.apache.org/jira/browse/MIME4J.
 * Some low level functions are available only in the pull parser (recommended for
   advanced users)
 * 0.6 contains a mixture of approaches to the parsing of advanced MIME field types. 
   Limitations are known with these approaches with some relatively uncommon use cases. 
   A consistent and comprehensive rewrite is planned for 0.7 which should consolidate 
   and address these.
 * The former interfaces TextBody and BinaryBody have been changed into abstract subclasses
   of class SingleBody. Code that implements these interfaces has to be changed accordingly.
   [https://issues.apache.org/jira/browse/MIME4J-111]
 * A dedicated class for writing a message has been introduced. Class MessageWriter has now
   to be used instead of Body.writeTo(OutputStream, int). A short-cut method
   Message.writeTo(OutputStream) without a mode parameter is also available.
   [https://issues.apache.org/jira/browse/MIME4J-110]
 * Class NamedMailbox has been removed. Class Mailbox now has an additional name property.
   [https://issues.apache.org/jira/browse/MIME4J-107]
 * Class MessageUtils has been removed. The methods and constants can now be found in class
   CharsetUtil in the same package.
   [https://issues.apache.org/jira/browse/MIME4J-106]
 * Package org.apache.james.mime4j.decoder has been renamed in org.apache.james.mime4j.codec.
   [https://issues.apache.org/jira/browse/MIME4J-105]
 * Class AbstractBody has been superseded by SingleBody. AbstractBody has been removed.
 * BodyFactory introduced allowing more flexible storage for Message parts. TempFileTextBody
   and TempFileBinaryBody removed.
   [https://issues.apache.org/jira/browse/MIME4J-87]
 * Mime4j now has a more flexible mechanism for storing message bodies. Class TempStorage
   has been superseded by StorageProvider in package org.apache.james.mime4j.storage.
   The classes TempStorage, TempPath, TempFile and SimpleTempStorage have been removed.
   [https://issues.apache.org/jira/browse/MIME4J-83]
 * Temporary text body storage for Message parts now defaults to US-ASCII (was ISO-8859-1)

Detailed change log can be found here:

http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310521&styleName=Html&version=12313434


Release 0.5
-------------------

Mime4J is a flexible MIME parsing library written in Java. SAX, DOM and pull parsing
styles are supported.


The 0.5 release addresses a number of important issues discovered since 0.4. In 
particular, it improves Mime4j ability to deal with malformed data streams including 
those intentionally crafted to cause excessive CPU and memory utilization that can 
lead to DoS conditions.

This release also fixes a serious bug that can prevent Mime4j from correctly 
processing binary content.

Detailed change log can be found here:

https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310521&styleName=Html&version=12313178

Notes
-----
 * Mime4j API is still considered unstable and is likely to change in future releases
 * DOM support has known limitations and some roundtrip issues remain to be resolved
 * Some low level functions are available only in the pull parser (recommended for 
   advanced users)



Release 0.4
-------------------

Mime4J is a flexible MIME parsing library written in Java. SAX, DOM and pull parsing
styles are supported.

The 0.4 release brings a number of significant improvements in terms of 
supported capabilities, flexibility and performance: 

* Revised and improved public API with support for pull parsing

* Support for parsing of 'headless' messages transmitted using non SMTP 
  transports such as HTTP

* Reduced external dependencies. Mime4j is no longer directly dependent on log4j 
  and commons-io

* Improved parsing performance (up to 10x for large messages)

* More comprehensive header parsing including support for RFC1864, RFC2045, 
  RFC2183, RFC2557 and RFC3066

* Revised packaging and exception hierarchy. MimeException now extends
  IOException.

Detailed change log can be found here:

http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310521&styleName=Html&version=12312483

Notes
-----
 * 0.4 contains numerous API improvements and is not binary compatible with 0.3
 * Mime4j API is still considered unstable and is likely to change in future releases
 * DOM support has known limitations and some roundtrip issues remain to be resolved
 * Some low level functions are available only in the pull parser (recommended for 
   advanced users)
