VERSION 0.6.0-cvs ================= 2004-12-19 Vincent Richard * Added chaining in exception handling. vmime::exception::other() returns the exception which is encapsulated in the current exception (if any). This allows to retrieve the exception "stack" (for example, this is used for 'maildir' implementation, where some functions return a 'filesystem_exception' encapsulated in a 'messaging_exception'). * Fixed bugs and memory leaks in POP3/IMAP/maildir implementations. 2004-12-17 Vincent Richard * Made default platform handlers (currently, only "posix"). Source files are in src/platforms/[platform-name]. To use a default platform handler, do the following: - #include - call vmime::platformDependant::setHandler() with the appropriate class - link your program with both 'libvmime' and 'libvmime-[platform-name]' For example, to use the default platform handler for POSIX (GNU/Linux): #include int main() { vmime::platformDependant::setHandler (); // ... } and link your program with "-lvmime" and "-lvmime-posix". 2004-10-21 Vincent Richard * A _LOT_ of cleaning/refactoring in VMime code: - got rid of field types (only using field names now). - removed iterators on 'header', 'text', 'addressList', 'mailboxGroup', 'propertySet' and 'bodyPart': use access functions instead (iterators made the code difficult to understand). You can always use standard iterators on the container returned by getFieldList(), and so on. - migrated to get/set convention for accessors (most of time, just add 'get' or 'set' before method name, depending on what it does). - dropped 'comp_t' typedef on 'datetime' (useless). - moved a lot of code from header (.hpp) to implementation files (.cpp). - made all objects cloneable and copiable at the 'component' level: methods component::clone() and component::copyFrom(). - made a 'typeAdapter' to allow using fondamental/no-vmime types in header field and parameter values. - implicit 'operator=' on header fields to set value is not allowed anymore: use setValue() instead or you will get a std::bad_cast exception. - 'textParameter' renamed to 'defaultParameter'. - vmime::makeWordsFromText() is now vmime::text::newFromString(). - changed a lot of return type value from reference to pointer, to to avoid confusion. 2004-10-05 Vincent Richard * added clone() method on 'component' object. 2004-09-09 Vincent Richard * IMAPFolder.cpp: fixed rename(): folder name is now updated. 2004-08-21 Vincent Richard * charset.cpp: workaround (hack?) for different 'iconv' prototypes (they may differ in the second parameter being 'const' or not). 2004-08-20 Vincent Richard * renamed "messaging/folderPath" to "utility/path" for common use in "messaging/folder" and "utility/file". * moved "stream" and "stringProxy" into "utility" namespace. * started to write some "JavaDoc-like" comments, for use with Doxygen. 2004-08-18 Vincent Richard * stringProxy.hpp: fixed stringProxy::it_end() which returned wrong value (typo...). 2004-07-26 Vincent Richard * fileAttachment: fixed the encoding param (not set to default anymore) and provided a new constructor to specify your own encoding. 2004-07-22 Vincent Richard * wide-char support is disabled by default. To enable, set the flag "with_wide_char_support=yes" on the SCons command line. 2004-07-08 Vincent Richard * renamed messaging/POP3*, messaging/IMAP* and messaging/SMTP* classes to follow the same convention as other class names. 2004-07-03 Vincent Richard * moved some files to "utility" subdirectory ("vmime::utility" namespace). VERSION 0.5.1 ============= 2004-06-15 Vincent Richard * contentHandler, htmlTextPart: Fixed some compilation issues with g++ version < 3.4: [error: declaration of `const vmime::encoding& encoding() const' changes meaning of `encoding' from `class vmime::encoding']. * Fixed errors in SConstruct with Windows NT (2k, XP...). VERSION 0.5.0 ============= 2004-05-26 Vincent Richard * added methods receiveRaw() and sendRaw() on vmime::socket object. Do not forget to implement it, or you will get a compile error. 2004-05-21 Vincent Richard * added some unit tests in the "tests" directory. To run all the tests, 'cd' to the "tests" directory, compile test programs by running "make" and then execute the "run-tests.sh" script. * charset: added a convert() function to perform stream conversion. 2004-05-18 Vincent Richard * encoder*: updated all encoders so they use input streams and output streams instead of a in-memory string. You can use the stream adapters (inputStreamStringAdapter and outputStreamStringAdapter) for your code to continue working the old-fashioned way... 2004-05-17 Vincent Richard * messaging/transport.hpp: added a "size" parameter to send() function. 2004-05-16 Vincent Richard * body: body contents and data in text parts are now handled via a proxy object: contentHandler. This allow more flexibility, including providing data from an input stream instead of storing whole data in memory into a string object. This also provide a big performance and memory usage improvement. For more information, please see the comments in the file "contentHandler.hpp". 2004-05-15 Vincent Richard * all files: modified the parsing in depth (not using iterators anymore), the code is clearer and faster. * IMAPutils.cpp: corrected a bug (typo) in IMAPutils::dateTime(). 2004-05-13 Vincent Richard * all files: added a generate() method on vmime::component to generate objects into an output stream (outputStream). This offers a large performance and memory usage improvement when generating big messages. * stream.cpp/.hpp: new objects "inputStream" and "outputStream" to provide more flexibility than with standard C++ streams. There are also adapters for standard i/o streams, provided for compatibility. VERSION 0.4.2 ============= 2004-05-08 Vincent Richard * messaging: added a system of event notification (message change, folder renamed, etc...). For more information about this, please consult "src/messaging/events.hpp". 2004-05-03 Vincent Richard * messaging: added a lot of useful features to message stores (set/get message flags, message deletion, copy, rename folder, adding messages, unique identifiers, MIME part/header fetch, partial fetch...). 2004-04-30 Vincent Richard * messaging/message.hpp: added a fetchPartHeader() method to extract the header of a specific MIME part. 2004-04-25 Vincent Richard * all files: removed (illegal) extra ';' after namespace declarations. * all files: fixed some compilation errors with g++-3.4 (the parser is more strict and more standard-compliant). 2004-04-24 Vincent Richard * messaging/*: splitted "progressListener" into two objects: "progressionListener" and "timeoutHandler". The last one is used internally in VMime. The "progressionListener" parameter is no more passed as argument to the constructor of a "service" object. Instead, it can be given in argument to the functions that use it: - message::extract[Part]() - folder::fetchMessages() - transport::send() 2004-04-04 Vincent Richard * messaging/folder.hpp: added a (optional) parameter "recursive" to getFolders() to allow enumeration of all sub-folders (that is, direct and indirect). 2004-04-03 Vincent Richard * messaging/authenti[fi]cationInfos: renamed class 'authentificationInfos' to 'authenticationInfos'. * exception.hpp: renamed class 'authentification_error' to 'authentication_error'. * messaging/SMTPtransport: renamed 'options.need-authentification' to 'options.need-authentication'. 2004-04-02 Vincent Richard * added basic IMAP support. This is EXPERIMENTAL. 2004-03-25 Vincent Richard * messaging::folder::path: changed type of 'component' from 'string' to 'word' to allow multiple charsets to be used in a path. * implemented a noop() command on vmime::messaging::service class. * messageParser.cpp: it is now possible to get more information on an attachment using the "Content-Disposition" (use the attachmentInfo() fonction to retrieve the "Content-Disposition" field related to the attachment). VERSION 0.4.1 ============= 2004-03-24 Vincent Richard * SMTPtransport.cpp: fixed a bug in send(). VERSION 0.4.0 ============= 2004-02-19 Vincent Richard * mailboxGroup.cpp: fixed a segfault when generating() an empty group (eg. "undisclosed-recipient"). 2004-02-17 Vincent Richard * === MAJOR CHANGE === Removed old "network features". Now, this is called "messaging system" and a new (incompatible) interface is provided. 2003-12-30 Vincent Richard * encoderFactory.cpp/.hpp: added stuff to allow iterating through registered encoders. * encoder*.cpp/.hpp: changed the way options/results are set in encoders: now, a vmime::propertySet is used. This provides more flexibility. 2003-12-25 Vincent Richard * constants.cpp/.hpp: media types constants: removed "sub" namespace and translated "sub::[TYPE]::[SUBTYPE]" to "[TYPE]_[SUBTYPE]". 2003-12-08 Vincent Richard * constants.cpp/.hpp, dateTime.cpp/.hpp: translated all constants/enums from lower-case to upper-case letters. 2003-12-04 Vincent Richard * Created a new class for singleton. Derived all concerned class from this new class. This concerns: "encoderFactory", "headerFieldFactory", "parameterFactory", "options" and "textPartFactory". 2003-12-02 Vincent Richard * Moved to SCons building system (http://www.scons.org/) and dropped old autoconf/automake system. Type 'scons' to build the library and use 'scons install' to install it on your system. 2003-12-01 Vincent Richard * mailboxGroup.cpp: fixed a bug in typeid() comparison: changed "typeid(parsedAddress)" to "typeid(*parsedAddress)" to test the object dynamic type (the previous test was always false). VERSION 0.3.5 ============= 2003-10-24 Vincent Richard * included some sample programs in the "examples/" directory. For a more complete documentation, please visit: http://www.kisli.com/vmime/doc/ . * all files: it is not possible to create header fields directly anymore (ie. you cannot call the constructor directly); instead, you should use the "headerFieldFactory" object. VERSION 0.3.4 ============= 2003-10-05 Vincent Richard * all files: changed all calls 'std::isspace(???)' to '[vmime::]isspace(???)' since no locale was passed (anyway, no locale is needed: text is ASCII). 2003-10-04 Kai Stammerjohann * included a Visual C++ 7 solution/project for vmime: see "vmime.sln" and "vmime.vcproj" in the root directory. VERSION 0.3.3 ============= 2003-09-22 Vincent Richard * moved all constants (media types, charsets...) from base.cpp/.hpp to new files constants.cpp/.hpp. 2003-09-21 Vincent Richard * messageBuilder.cpp (construct): fixed algorithm for generating text parts. Single and multiple text parts, with or without attachments are now handled correctly (as recommended by the RFCs). * bodyPart.cpp/.hpp, body.cpp/.hpp, header.cpp/.hpp: added clone() and operator=() functions to be able to duplicate body parts. * messageParser.cpp (findTextParts): handled the case in which the message is not "multipart/*": we use the main part if its type is "text/*". * messageParser.cpp (destructor): added code for deleting the text parts created by the findTextParts() function. VERSION 0.3.2 ============= 2003-09-19 Bevan Collins * encoderQP.cpp: fixed a bug in quoted-printable encoding: "=20\r\n" is appended to the line ending with a space. 2003-09-13 Vincent Richard * charset.cpp/.hpp: dropped internal conversion from charset name (string) to charset type (enum). We keep only the name of the charset. * base.cpp/.hpp: added string constants for some charsets. 2003-09-12 Vincent Richard * messageParser.cpp (findAttachments): fixed the search for attachment parts. The right test is "cdf.value().name() != dispositionTypes::_inline" and not "cdf.value().name() != dispositionTypes::attachment"... 2003-09-11 Vincent Richard * plainTextPart.cpp/htmlTextPart.cpp: fixed a bug in parse(): when getting the "charset" parameter, "no_such_parameter" exception was not caught if the parameter was not present. 2003-09-06 Vincent Richard * base.cpp: added a special case when encoding to Quoted-Printable: lines are no more limited to 76 characters (the maximum length recommended by the RFC) if maxLineLength == lineLengthLimits::infinite. However, this SHOULD NOT be used when generating mails (not RFC compliant). VERSION 0.3.1 ============= 2003-08-24 Vincent Richard * mailbox.hpp: added "const" functions for name() and email(). 2003-07-26 Vincent Richard * charset.cpp: fixed a bug in "charset::iconvert()". Also, the conversion is now done using a buffer, and not in one block. 2003-07-24 Vincent Richard * receiveProtocol[POP3].hpp/.cpp: a socket factory can now be passed in argument to the constructor so that it is possible to override the use of the default factory (set in vmime::platformDependantHandler). VERSION 0.3.0 ============= 2003-07-21 Vincent Richard * configure.in: changed 'libdir' to install lib files in {PREFIX}/lib instead of {PREFIX}/lib/vmime. However, include files remain in the {PREFIX}/include/vmime directory. 2003-06-28 Vincent Richard * base.hpp/.cpp: changed the return type of "libname()" and "libversion()" from "string::value_type*" to "string". 2003-06-16 Vincent Richard * platformDependant.hpp: added "getSocketFactory()" function to be used with the new network features. * configure.in: modified the file to permit passing arguments to the "configure" script: . --disable-net: disable network support (new in 0.3.0) . --enable-debug: enable debug mode (not used for now) * started version 0.3.0: added network features: connection to mail servers via POP3, IMAP... Related classes: "receiveProtocol*", "serverInfos" and "socket", an abstract socket class. VERSION 0.2.1 ============= 2003-05-28 Vincent Richard * messageId.cpp: added "vmime." at the beginning of random-generated message-ids (to make them more unique). 2003-05-26 Vincent Richard * all source files: replaced "_VMIME_xxxxx_HPP_INCLUDED_" macros with "VMIME_xxxxx_HPP_INCLUDED". Names beginning with "_" (underscore) and followed by an uppercase letter are reserved to the implementation (see the C++ standard: 17.4.3.1.2 Global names). VERSION 0.2.0 ============= 2003-05-18 Vincent Richard * messageParser.cpp: added a message parser (to be used parallely with messageBuilder). Extraction of attachment, plain text parts and HTML text parts (with embedded objects) is supported. 2003-05-09 Vincent Richard * body.cpp (generate): the default prolog & epilog text (as defined in vmime::options) are not written anymore in sub-parts (only for the "root" part). Added a "isRoot" member to vmime::header. 2003-05-08 Vincent Richard * encoding.cpp (decide): added some code to choose "quoted-printable" when there are lines with more than "lineLengthLimits::convenient" characters (or with a '.' just after a '\n'). * base.cpp (makeWordsFromText): enhanced algorithm. 2003-05-04 Vincent Richard * address.cpp, mailbox.cpp, mailboxGroup.cpp: added empty() function. * messageBuilder.cpp (construct): some validity checks: we now check there is one expeditor and at least one recipient. VERSION 0.1.0 ============= 2003-05-03 Vincent Richard * First (beta) version released.