Thursday, Aug 5 2010
By Vincent on Thursday, Aug 5 2010, 13:08 - Development
By popular demand, it is now possible to handle time out during connection to IMAP, POP3 and SMTP servers.
There is nothing to change in your code to enjoy this new feature, at least if you already set a time out handler on the store (vmime::net::store::setTimeoutHandler). The same time out handler is used for connection and for data exchange after the connection has been opened.
Please note: for now, this is only available in VMime SVN, revision 559, and for POSIX platforms (this feature is not yet supported on Windows).
Tuesday, May 18 2010
By Vincent on Tuesday, May 18 2010, 18:33 - Development
Hi VMime users!
Let's focus today on a new feature in VMime 0.9. Until now, when you wanted to "explore" the contents of a vmime::net::message (that is, a message hosted on a IMAP or a POP3 store), you had to extract it entirely, or to use low-level fetch() and extract() functions on the message object.
Since the current development release of May 18th, there is a new helper function that will let you access the remote message like a "normal" vmime::message, and actually download the message data only when it is required (this only works for IMAP).
// Connect to the IMAP store
vmime::ref <vmime::net::session> sess = vmime::create <vmime::net::session>();
vmime::utility::url storeURL("imap://username:password@imap.example.com");
vmime::ref <vmime::net::store> store = sess->getStore(storeURL);
store->connect();
// Open the INBOX
vmime::ref <vmime::net::folder> folder = store->getDefaultFolder();
folder->open(vmime::net::folder::MODE_READ_WRITE);
// Get the first message in the INBOX
vmime::ref <vmime::net::message> msg = f->getMessage(1);
// Construct the parsed message (a few data, header and structure,
// is actually downloaded from the IMAP server)
vmime::ref <vmime::message> parsedMsg = msg->getParsedMessage();
// Here, extract() will actually download message data from the server
vmime::utility::outputStreamAdapter out(std::cout);
parsedMsg->getBody()->extract(out);
That's all folks! Update your source tree to the latest SVN head to enjoy this new feature.
Saturday, Apr 10 2010
By Vincent on Saturday, Apr 10 2010, 09:12 - Support
Some users fequently ask me how to connect to GMail SMTP service with VMime. You have to connect to server using SMTP protocol (not SMTPS), and set the connection.tls property to true to initiate a secured connection using STARTTLS.
The following code is known to work:
vmime::utility::url url("smtp://smtp.gmail.com");
vmime::ref tr = session->getTransport(url);
tr->setProperty("connection.tls", true);
tr->setProperty("auth.username", "gmail-login");
tr->setProperty("auth.password", "gmail-password");
tr->setProperty("options.need-authentication", true);
tr->setCertificateVerifier(yourCertificateVerifier);
Wednesday, Mar 3 2010
By Vincent on Wednesday, Mar 3 2010, 19:25 - Support
For those using VMime on Windows platform, someone has written a HOWTO to get VMime compiled, with all its dependencies, using MinGW. It's there: HOWTO: Compiling libvmime on MinGW/MSYS.
Tuesday, November 3 2009
By Vincent on Tuesday, November 3 2009, 21:07 - Development
Hello VMime users!
Thanks to László Vadócz, a possible segfault in stringUtils::countASCIIchars() has been fixed. A patch is available.
There was another major issue with body contents not generating when using streamContentHandler: EOF condition was not reset correctly when stream::reset() was called. The patch is available here.
Sun, September 6 2009
By Vincent on Sun, September 6 2009, 15:21 - News
Hi all!
VMime has been relicensed under the GNU General Public License version 3. So, this will be the default license starting from version 0.9.1 (which is currently in development).
Additionally, due to a lot of demand, and to support development, VMime is now available under dual-licensing:
- GNU GPL v3 for Free and Open Source projects. This is the default license for VMime.
- Commercial license, for proprietary software. This license is available for purchase.
Please consult Licensing Overview and Dual-Licensing Model
for more information about this.
Thursday, Aug 20 2009
By Vincent on Thursday, Aug 20 2009, 07:56 - News
The new website for VMime is now online!
Oh... and for those wondering if VMime is still maintained: YES, it is! In the last year, I had not much time to make releases
but I worked on it from time to time (mainly bug fixes, no new features). Since I have a little more time now, I will try to post
news here regularly.
Please note I am still looking for contributors as there is a lot of work to do,
so please feel free to contact me if you are interested!
Saturday, Jun 13 2009
By Vincent on Saturday, Jun 13 2009, 21:09 - Development
VMime 0.9.0 autoconf build process uses the libgnutls-config script to search for
GNU TLS (by using AM_PATH_LIBGNUTLS).
This script is deprecated and not shipped in gnutls 2.8.0 and later; pkg-config should now be used.
Andreas Metzler provided a
patch for fixing this.
Saturday, October 18 2008
By Vincent on Saturday, October 18 2008, 19:19 - Release
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.
Tuesday, Jul 8 2008
By Vincent on Tuesday, Jul 8 2008, 15:04 - Development
VMime is thread-safe in the sense you can have multiple threads running VMime code
at the same time.
What you may NOT do is to share VMime objects (for writing) between threads. For example,
you should NOT modify the same bodyPart object from two threads at the same time (reading
is OK) unless you write your own synchronization mechanism between the calls.
If you are using the messaging module, it is OK to access multiple mailboxes (store
objects) from multiple threads (each thread accesses one mailbox).
The rest of the code (parser, utils, etc.) is thread-safe as long as (again...)
you don't share the objects (body parts, mailboxes, etc.) between multiple threads.
There are some singleton objects in VMime. There is absolutely no problem when
instanciating a VMime singleton for the first time within multi-threaded code.
Instanciation of all singletons is forced when VMime is initialized (static code,
executed before your main()).
Thursday, Apr 17 2008
By Vincent on Thursday, Apr 17 2008, 21:07 - Support
Q: I called deleteMessage() to delete a message from a store, but the message is not actually deleted!
A: Call folder->close(true) to expunge messages marked as deleted.
Wednesday, December 20 2006
By Vincent on Wednesday, December 20 2006, 14:34 - Release
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).
Sun, November 6 2005
By Vincent on Sun, November 6 2005, 11:21 - Release
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.
Tuesday, Jun 21 2005
By Vincent on Tuesday, Jun 21 2005, 19:47 - Release
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.
Last Comments