VMime’s source code repository is now hosted at GitHub. It can be checked out through anonymous access with the following instruction:
git clone git://github.com/kisli/vmime
We also have updated Issue Tracker from the previous one on SourceForge.
An open source solution for working with MIME messages and Internet messaging services like IMAP, POP or SMTP. ▸ Learn more...
VMime’s source code repository is now hosted at GitHub. It can be checked out through anonymous access with the following instruction:
git clone git://github.com/kisli/vmime
We also have updated Issue Tracker from the previous one on SourceForge.
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!).
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!
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).
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.
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 <vmime::net::transport> 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);
To connect to IMAP on GMail, use the following code:
vmime::utility::url url("imaps://login:password@imap.gmail.com:993");
vmime::ref <vmime::net::store> store = session->getStore(url);
store->setCertificateVerifier(yourCertificateVerifier);
store->connect();
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.
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.
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:
Please consult Licensing Overview and Dual-Licensing Model for more information about this.
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!
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.