Development

Please also visit the VMime project page on GitHub.

Contributing

As VMime is Open Source software, you are free and welcome to contribute!

If you have a patch and you want it to be included into official VMime release, you have to release your patch to the public domain or assign the copyright to VMime authors. You will still be credited in our AUTHORS file, don’t worry! 😉

Roadmap and ToDo List

See also the Issue Tracker on the GitHub project page.

New features and enhancements

  • Support for non-MIME parts (no “Content-Type” header), with uuencode’d attachments
  • Cache ‘maildir’ data (folder and message index)
  • Synchronization for IMAP (RFC-4549)
  • SMTP Service Extension for Message Size Declaration (see RFC-1870) (done on 2013/06/24)
  • SMTP Command Pipelining (see RFC-2920) (done on 2012/11/11)
  • PGP-MIME (RFC-3156), S/MIME
  • OpenSSL support (done on 2012/11/03)
  • Implement message search for stores that support it (IMAP, maildir?)
  • Check IMAP4/IMAP4rev1 capability in IMAP connection code
  • Allow to move messages between folders (net::folder::moveMessage())
  • IMAP, POP3: reissue CAPA command once TLS has been started (see RFC-2595) (done on 2013/06/17)
  • Support for objects referenced by an URL in MHTML aggregate documents (see RFC-2557)
  • ‘mailbox’ storage support
  • Error handling for Windows sockets (use socket_exception(), like in POSIX sockets) (done on 2012/11/30)
  • Implement POP before SMTP
  • Implement logging facility for all messaging services and/or tracer for other part of code, to facilitate debugging (done on 2014/03/16)
  • Implement the following RFCs:
    • RFC-3461: SMTP Service Extension for Delivery Status Notifications (DSNs)
    • RFC-6532 (Internationalized Email Headers) (done on 2013/02/24)
    • RFC-6531 (SMTP Extension for SMTPUTF8) (done on 2013/06/12)
    • RFC-3030: CHUNKING and BINARYMIME (SMTP) (done on 2013/06/20)
    • RFC-1652: 8BITMIME (SMTP)
    • P-IMAP: Push-IMAP Protocol (IMAP)
    • RFC-4315: IMAP – UIDPLUS Extension (support for APPENDUID) (done on 2013/12/30)
    • RFC-2088: IMAP4 non-synchronizing literals
    • RFC-4551: IMAP Extension for Conditional STORE Operation (partially done on 2013/07/16)
    • RFC-4466: Collected Extensions to IMAP4 ABNF (update IMAP parser)
    • RFC-5819: IMAP4 Extension for Returning STATUS Information in Extended LIST
    • RFC-5162: IMAP4 QRESYNC Extension
    • RFC-3348: IMAP Child Mailbox Extension (done on 2013/12/31)
    • RFC-6154: IMAP LIST Extension for Special-Use Mailboxes (done on 2014/01/03)
    • RFC-2971: IMAP ID Extension
  • Add an option to “attachmentHelper” to recognize and return inline objects. The aim is to consider MHTML objects (parts with a “Content-Id” or a “Content-Location”, such as inline images) as attachments. (done on 2010/09/07)
  • Support for IMAP IDLE (RFC-2177)

Code Cleanup & Refactoring

  • Move POP3 connection code into a new POP3Connection class (done on 2013/06/12)
  • Move SMTP connection code into a new SMTPConnection class (done on 2013/06/19)
  • Change data type for socket::sendRaw() from ‘char’ to ‘byte_t’ (done on 2013/12/10)
  • Check for abusive use of C++ exceptions. Exceptions should only be used for error handling scenario, not for normal flow (eg. a “field not found” should not throw an exception) (done on 2013/11/23)

Quality & Testing

  • Unit tests for IMAP parser
  • Test IPv6 support