forked from apache/james-mime4j
-
Notifications
You must be signed in to change notification settings - Fork 0
/
RELEASE_NOTES.txt
189 lines (142 loc) · 8.87 KB
/
RELEASE_NOTES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
Release 0.9.0
-------------------
Fix MIME4J-262 without breaking compatibility with old code by deprecating MessageBuilder and adding Message.Builder
Message.Builder produce message for which the getDate method return null if and only if the message do not have a "Date"
header. Whereas MessageBuilder will produce message for which the getDate method never return null: if the message has
no "Date" header the returned value is "new Date()" result when the message has been instantiated
Release 0.7.2
-------------------
Mime4J is a flexible MIME parsing library written in Java. SAX, DOM and pull parsing styles are
supported.
The 0.7.2 release fixes several non-critical bugs found since release 0.7.1.
Release 0.7.1
-------------------
Mime4J is a flexible MIME parsing library written in Java. SAX, DOM and pull parsing styles are
supported.
The 0.7.1 release fixes several non-critical bugs found since release 0.7.
Release 0.7
-------------------
Mime4J is a flexible MIME parsing library written in Java. SAX, DOM and pull parsing styles are
supported.
The 0.7 release brings another round of API enhancements, bug fixes and performance optimizations.
A major effort has been put in code reorganization, separating parsing code from DOM manipulation
code. Mime4J has been restructured into three separate modules: 'core', 'dom' and 'storage'.
The 'core' package provides an event-driven SAX style parser that relies on a callback mechanism
to report parsing events such as the start of an entity header the start of a body, etc.
The 'dom' package contains base/abstract classes and interfaces for MIME-DOM manipulation aiming
to provide the base for a full featured traversable DOM. Per default the Mime4J DOM builder stores
content of individual body parts in memory. The 'storage' package provides support for more
complex storage backends such on-disk storage systems, overflow on max limit, or encrypted storage
through JSSE API.
Mime4J 0.7 improves support for headless messages, malformed separation between headers and body
and adds support for "obsolete" rfc822 syntax (e.g: "Header<somespace>: " style). Parsing
performance for quoted printable streams have been considerably improved. A "DecodeMonitor" object
has been introduced in most code to define how to deal with malformed input (Lenient vs Strict
behaviours). Mime4J 0.7 also provides LenientFieldParser as an alternative to DefaultFieldParser
when a higher degree of tolerance to non-severe MIME field format violations is desired.
Upgrade Notes
-------------
* The default field parsing logic has been moved from AbstractField to DefaultFieldParser.
* Low level MIME stream classes have been moved from org.apache.james.mime4j.parser to
org.apache.james.mime4j.stream package (Field, RawField, MimeTokenStream, ...)
* "dom" classes/interfaces have been moved from the .message and .field package to the .dom
package tree.
* The method decodeBaseQuotedPrintable() of class o.a.j.mime4j.codec.DecoderUtil has been renamed
in decodeQuotedPrintable().
* Preamble and Epilogue are now correctly handled as optionals and the parser invoke their
tokens/events only when they are present in the message. So if your code rely on that events
being always called make sure to fix it.
* preamble and epilogue Strings in Multipart DOM object are now nullable: an empty preamble is
different from no preamble, so we had to update the dom contract to support this difference.
Make sure to add null checks if code using multipart.getPreamble and multipart.getEpilogue.
* the first event for headless parsing in MimeTokenStream is not the first BODY event.
You should not expect T_START_HEADER/T_END_HEADER any more.
Please also note that as of this release Mime4j requires a Java 1.5 compatible runtime.
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)