We are proud to announce VMime 0.9.1 release, which includes all bug fixes and features from the last two years (yeah, I know this looks like eternity, but don’t worry, VMime is still regularly maintained!).
- Fixed a lot of compilation issues on some platforms
- Fixed message parsing and generation issues
- Better support for encoding
Thanks to all who contributed to this release, and those using VMime! We are working hard to provide the Open Source world with a powerful and reliable mail library since more than 10 years!
Version 0.9.0 is (finally) out, with some refactoring, API changes and bug fixes. This is an excerpt from the ChangeLog :
- File Attachments: fixed constructor ambiguity due to implicit conversions. Removed default values and reordered parameters (API breaking change). Many thanks to Philipp Frenkel. More information here.
- Text/Words: fixed incorrect white-space between words.
- IMAP: fixed bug in modified UTF-7 encoding.
- Implemented thread-safe reference counting for smart pointers, whenever possible (GCC built-in functions / pthread / Win32).
- SMTP: better parsing of ESMTP extensions.
- Maildir: added support for “Courier” Maildir.
Version 0.8.1 is released: a lot of bugs fixed.
- Imbue classic “C” locale for the output of message parts and protocol commands (thanks to Mörtsell Anders).
- Renamed ‘vmime::platformDependant’ to ‘vmime::platform’. The old name has been kept for compatibility with previous versions.
- SMTP: reissue EHLO command after a successful STARTTLS negociation.
- Word Encoder: fixed bug #1096610 which caused encoding of a non-integral number of characters (and then, generation of incorrectly-formed words) with multi-bytes charsets.
- Fixed bugs in MHTML code: ‘CID’ prefix should not be case-sensitive; fixed detection of parts identified by a ‘Content-Location’.
- IMAP and Maildir: added vmime::net::folder::destroy() to delete folders.
- Renamed ‘byte’ to ‘byte_t’ to fix compilation problems on Fedora core 5 (thanks to Rafael Fernandez).
- IMAP: added a “relaxed” mode to IMAP parser to allow 8-bit characters where not allowed by the standard (thanks to Tim Teulings for having found the bug).
- Added service::isSecuredConnection() and service::getConnectionInfos() to retrieve information about the connection.
- Added support for attachments of type “message/rfc822″.
- IMAP: implemented multi-fetching. Now using “FETCH x:y” instead of sending (y-x+1) “FETCH” requests.
- POSIX sockets: use getaddrinfo() if available. This should bring thread-safe DNS resolution and IPv6 support.
- IMAP: compatibility bugs + enhanced debugging trace.
- Exception: fixed segfault in destructor when destroying an exception chain with more than 2 elements (thanks to Bertrand Benoit).
- POSIX: fixed a bug in argument vector; last argument was not NULL (thanks to Bertrand Benoit).
- Maildir: fixed problem with ‘:’ in filename on Windows platform (thanks to Benjamin Biron).
- Utility: fixed buffer overrun in random::getString (thanks to Benjamin Biron).
- SMTP: fixed bug in disconnect() when authentication is not needed (thanks to Benjamin Biron).
- Utility: gmtime() and localtime() are reentrant when using MS C runtime library (MinGW/MSVC).
Version 0.8.0 is out, with SASL and TLS support.
The VMime Book (developer guide) is now available!
- Refactored header field values and parameters.
- Utility: new object charsetConverter for converting between charsets (code moved from static functions in ‘charset’ class). Added charsetFilteredOutputStream provide charset conversion while writing to an output stream.
- Build: fixed compilation problems on FreeBSD (thanks to Xin LI).
- Attachments: the attachmentHelper allows listing all attachments in a message, as well as adding new attachments.
- Utility: renamed progressionListener to progressListener.
- Messaging: removed “server.socket-factory” property; added the service::setSocketFactory() function instead. Removed “name” parameter from platformDependant::getSocketFactory() function.
- Messaging: removed “timeout.factory” property; added the function service::setTimeoutHandlerFactory() instead. Removed the function platformDependant::getTimeoutHandlerFactory().
- Added TLS/SSL support, using GNU TLS library.
- Added SASL support, based on GNU SASL library. Slightly modified auhenticator object; see ‘example6′ which has been updated.
- Utility: created ‘vmime::security’ and ‘vmime::security::digest’ namespaces. MD5 has been moved here. Added SHA-1 hash algorithm.
- Encoder, Content Handler: added progression notifications.
- Tests: moved to CppUnit for unit tests framework.
- Renamed ‘vmime::messaging’ to ‘vmime::net’. An alias has been kept for compatibility with previous versions (its use should be considered as deprecated).
- Exception: vmime::exception now inherits from std::exception.
- Messaging folder: added a FETCH_IMPORTANCE flag to fetch the fields used with ‘misc::importanceHelper’.
- POP3, IMAP, Maildir: fixed getMessages() when default arguments are given: no message were returned, instead of the real message count.
- Attachments/Message parser: added a getName() parameter to retrieve the attachment filename either from the “filename” parameter of the “Content-Disposition” field, or from the “name” parameter of the “Content-Type” field (if available).
- Added reference counting and smart pointers to simplify the use of VMime objects. Please see README.refcounting for more information.
- Content Handler: added extractRaw() method to allow extracting data without performing any decoding.
Version 0.7.1 has been released.
A lot of bugs have been fixed. Added some minor enhancements.
- Build: fixed compilation errors with g++ 4.0.
- Core: fixed a bug in RFC-2231 implementation.
- Core: fixed a bug in parsing, when the first character of word data was encoded in QP (thanks to Wolf Jiang).
- Core: fixed a memory leak in parameterizedHeaderField destructor (thanks to Rafael Fernandez).
- Messaging: added a ‘peek’ parameter to extract message contents without marking the message as seen.
- IMAP: fixed bug in subfolders enumeration.
- Examples: enhanced ‘example6′ into an interactive program to show some of the features of the messaging module.
- Messaging: changed getAvailableProperties() to return ‘serviceInfos::property’ objects instead of strings. This permits setting service properties in a more generic manner.
- IMAP: fixed missing space in “STATUS” command + parsing error in ‘status_info’.
- Utility: added a ‘childProcess’ class to help with spawning child processes (used in ‘sendmail’ implementation).
- Added guide describing how to compile VMime using Visual Studio .NET 2003
- Utility: moved progressionListener to ‘vmime::utility’ package since this can be of general use.
- Utility: added a bufferedStreamCopy() function which can take a ‘progressionListener’ parameter.
- Utility: added filtered input and output streams.
- Added sendmail transport service for local delivery.
- Core: fixed a bug in implementation of RFC-2231 (values were cut if longer than maxLineLength, and no line wrapping occured).
- Utility: fixed a lot of bugs in URLs parsing and encoding/decoding + added unit tests. Moved ‘url’ and ‘urlUtils’ from ‘vmime::messaging’ namespace to ‘vmime::utility’ namespace.