Version 0.9.1 released

Hi all!

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
  • Dual-licensing

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 released

Hello all!

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 released

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 released

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 released

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.