Hunny JMIME Change Log
Version 3.1.2 -- 2 Dec 2011
- Added global option to limit the parsing depth for nested multipart messages (Options.setMaxDepth()).
Version 3.1.1 -- 14 Oct 2008
- Bug fix: Exception thrown when parsing date with no time zone.
Version 3.1 -- 4 June 2008
- Added TnefDecoder and TnefAttachment classes which provide the ability to decode TNEF containers and extract any file attachments they contain.
Version 3.0 -- 24 Oct 2005
Bug fix in
ByteString.indexOf(int).New support for RFC 2231.
DispositionTypehas new methodsDispositionType.filenameU()andDispostionType.setFilenameU(String)that correctly add the filename parameter according to RFC 2231.New capabilities in the classes in the
mailnamespace. These classes now handle HTML email much better, including HTML email with inline images.Many "properties" were changed from
ByteStringtoString. Most of these properties should take values that consist of only ASCII characters. By changing these properties toString, we lose the ability to enforce the ASCII restriction, but we gain much in ease of use. Some examples includeMailbox.localPart,Mailbox.domain,MediaType.type,MediaType.subtype,Parameter.name, andParameter.value.The naming convention for "getters" and "setters" is made completely consistent. The getter omits the "get" prefix. The setter always has the "set" prefix. For example, for the
Mailbox.domainproperty, the getter isMailbox.domain()and the setter isMailbox.setDomain(String). While it's true that the "get" prefix is a common naming convention, and is part of the Java Beans naming convention, the getter without the "get" prefix is more economical and appears more pleasing when functions are chained together. Considermsg.getHeaders().getContentType().getType();versus
msg.headers().contentType().type();The character encoding conversion capability of
Mailboxis greatly improved. The methodsMailbox.getDecodedDisplayNameandMailbox.setDecodedDisplayNameare gone, because it is almost impossible to create the encoded words correctly. The changes are based assumptions that the programmer works with Unicode internally in the application, and converts to an alternative character encoding only when importing to or exporting from the internal environment.The character encoding and decoding implementation in
Textis improved and more thoroughly tested.The
BinHexwas rewritten and is now more robust and more thoroughly tested.
Version 2.2.4 -- 6 Nov 2003
Bug fix: parameters in headers fields that contain spaces are delimited by quotation marks
Improved code in Uuencode class
Version 2.2.3 -- 20 Aug 2003
- Bug fix: Parent node of headers and body not set in Entity copy constructor
Version 2.2.2 -- 7 May 2003
Changes to the documentation
Internal changes to Text class
New method: Text.getCharset()
Version 2.2.1 -- 21 February 2003
- Bug fix: IndexOutOfBoundsException thrown when parsing a multipart message that contains two consecutive boundary lines
Version 2.2 -- 30 January 2003
Bug fix: MsgId.createDomain() sets domain to empty string instead of null on failure
Bug fix: EncodedWord.bEncode()
Bug fix: AppleFile.setBackupTime() changed to public
Parts of Text class rewritten. Includes new method Text.setUnicodeText(String unicodeText, String charset) which correctly encodes 8-bit character sets, plus non-modal multibyte character encodings (UTF-8, BIG5, EUC-CN, EUC-JP, EUC-KR, EUC-TW, GB2312, GBK, Shift_JIS) and modal multibyte character encodings (ISO-2022-JP, ISO-2022-KR, ISO-2022-CN). Note that these encodings depend on the Java implementation for conversion.
Changes to TextUtil:
Added: CRLF_EOL, LF_EOL, toCrLf(), toLf(), toDefaultEol()
Removed: isSpace(), skipWhiteSpace(), skipNonWhiteSpace(), skipComment(), character constants (HT, LF, etc)Base64Encoder[W], Base64Decoder[W] rewritten to encode/decode faster
Base64Decoder[W].decodeSegment() and Base64Decoder[W].decode() throw a DecodeException if an error occurs
New method: QuotedPrintableDecoder[W].errorDetected(). QuotedPrintableDecoder[W] now does the right thing with decoding errors.
Parts of BinHex rewritten
AppleFile.unpack() throws a DecodeException if an error occurs
New method: ByteStringBuffer.setLength()
DecodeException has an integer error code
Removed method: Headers.contentLanguage(). (Use hdrs.fieldBody(Headers.CONTENT_LANGUAGE).)
Version 2.1 -- 12 November 2002
Bug fix: FieldBody.getText() incorrectly returned empty ByteString after AddressList.parse()
Bug fix: FieldBody.setText(ByteString) incorrectly set the is-modified flag in the FieldBody object
Bug fix: Field.fieldBody() did not set the parent of the new FieldBody object
Added new methods Entity.setHeaders(Headers) and Entity.setBody(Body)
Added new convenience methods MediaType.getCharset() and MediaType.setCharset(ByteString)
Added new constant Headers.CONTENT_LANGUAGE
Added "How To" document: How-To.htm
Added how-to subdirectory with additional, short examples