Hunny Mail++ Change Log

Version 4.2 -- 2 March 2015

  • Disable SSL 3.0 by default to avoid the POODLE vulnerability.

  • New option to allow a DNS name wildcard to match a partial label.

  • When checking the X.509 certificate name, check subjectAltName dNSName, subjectAltName iPAddr, and Subject Common Name, in that order

Version 4.1 -- 28 May 2014

  • Allow IP address in server certificate.

  • Option to allow DNS name wildcard in server certificate.

Version 4.0.2 -- 1 September 2010

  • Support for Mac OS X

Version 4.0.1 -- 31 December 2009

  • Updated for the latest Sun C++ compiler (Sun Studio 12).

  • Updated for GCC 4.3.2 for Solaris (with Sun code optimizer).

  • Updated for Solaris 10.

Version 4.0 -- 18 July 2008

  • Support for IPv6.

Version 3.1.2 -- 23 November 2005

  • Bug fix: Fixed memory leak that occurs when using TLS connections.

Version 3.1.1 -- 22 April 2005

  • Bug fix: Fixed memory leaks that occur when using the IMAP4 QUOTA command.

  • Added a wait parameter to the ConnectTls function in Imap4Client, NntpClient, Pop3Client, and SmtpClient.

  • Added a virtual destructor to the ProtocolListener class.

Version 3.1 -- 21 March 2005

  • Bug fix: Fixed memory leaks that occur during a TLS handshake.

  • Improved error reporting for failed TLS handshakes.

  • New behavior in TLS handshake: if the name in the certificate does not match the expected name, the library reports an error but does not close the connection.

  • The Imap4Client, NntpClient, Pop3Client, and SmtpClient classes have a new member function ConnectTlsOpenSSL. This member function acts like ConnectTls, but takes an OpenSSL SSL struct.

  • Improved trace facility. You can create a custom Trace Output object for complete control over trace output. The library provides the TraceOutput interface as an abstract base class and the StdTraceOutput class which writes trace output to standard output.

  • New member functions in FlagsResponse: NumFlags and FlagAt, which allow you to get all the flags in the FLAGS response.

  • New member functions in ListResponse and LsubResponse: NumAttributes and AttributeAt, which allow you to get all the attributes in the LIST and LSUB responses.

  • The Connect member function in Imap4Client, NntpClient, Pop3Client, and SmtpClient takes an optional wait parameter. When wait is true, the function waits for the server's initial greeting before returning. When wait is false, the function returns immediately after the connection is established. The latter case is necessary when you wish to connect to a server listening on a TLS socket. The default value for wait is true.

  • Imap4Client::AuthenticatePlain takes an optional authorizeID parameter.

  • The IMAP4 client implementation now supports the QUOTA, NAMESPACE, and PROXYAUTH IMAP4 options.

  • Many parameters that indicate a position in a list were changed from int to unsigned.

Version 3.0.1 -- 7 February 2005

  • Bug fix: Imap4Client must put quotes around zero-length mailbox names.

  • Bug fix: Imap4Client must encode mailbox reference name in LIST and LSUB commands

  • New Imap4Client::CommandStatus convenience member function that reports OK, NO, or BAD status of the last IMAP4 command.

Version 3.0 -- 4 December 2004

  • Bug fix: FetchResponse copy constructor and assignment operator should copy the BodySectionData data member.

  • Bug fix: NntpClient::AuthinfoUser and NntpClient::AuthinfoPass fails to work correctly.

  • Bug fix: NntpClient fails to send a large buffer when using CONVERT_EOL option.

  • The library now supports internationalized mailbox names in IMAP4. The API accepts and returns mailbox names as UTF-8 strings. The library converts mailbox names to and from modified UTF-7 in IMAP4 commands and responses. The change affects these classes: Imap4Client, ListResponse, LsubResponse, and StatusResponse.

  • The SmtpClient supports the SASL LOGIN mechanism.

  • Added a new VersionInfo function that returns a string that contains the version information. Added a new BuildInfo function that returns a string that contains build information (operating system, compiler, date, and time).

  • Introduced new Imap4Date class, which represents a date-time value in IMAP4. This new class affects the use of the FetchResponse::InternalDate() member function.

  • Introduced new MUTF7 class, which converts text to and from the modified UTF-7 and UTF-16 encodings of Unicode. The library uses this class internally. Library users may use it if the wish.

  • Introduced new UTF8 class, which converts text to and from the UTF-8 and UTF-16 encodings of Unicode. The library uses this class internally. Library users may use it if the wish.

  • The NntpClient::Xover and NntpClient::Over member functions may now be called with default arguments.

Version 2.4.2 -- 5 July 2004

  • Bug fix: NTLM fails on Solaris (endian issue)

  • Bug fix: Sending large buffer with SmtpClient fails when using CONVERT_EOL option

  • Improved debug output

  • Improved error reporting

Version 2.4.1 -- 12 May 2004

  • Improved error reporting in the IMAP4 client -- reports "connection dropped" network error and response parsing error

  • Improved portability - compiling on HP/UX 11

  • Updated build scripts/project files/makefiles

Version 2.4 -- 22 Apr 2004

  • Internal changes for memory allocation debugging

Version 2.2 -- 22 Oct 2003

  • Added NTLM authentication for IMAP4 and POP3

  • Imap4Client, NntpClient, Pop3Client, and SmtpClient have separate read and write timeouts

  • Bug fix: protocol error in PLAIN authentication in IMAP4 (server initiates)

  • Added a work-around for a bug in Microsoft Exchange Server 2000's IMAP implementation (continuation response should contain a space)

Version 2.1.3 -- 15 May 2003

  • Bug fix: Bad memory access if broken SMTP server sends a "221-OK" immediately before closing the connection. (The correct reply should be "220 OK".)

Version 2.1.2 -- 30 January 2003

  • Bug fix: IMAP4 parser not handling parser error as it should

Version 2.1.1 -- 13 November 2002

  • Disabled the Nagle algorithm in the socket to improve throughput

Version 2.1 -- 29 March 2002

  • Added NntpClient class

  • Added StreamBuffer class and Imap4Client::Append() member function that takes a StreamBuffer argument

  • Added SMTP VRFY command

  • Added copy constructors and assignment operators for many classes

  • (internal) HeapBuffer class to simplify memory management

  • (internal) Debugging output self-contained in the Imap4Client/Parser, NntpClient, Pop3Client, and SmtpClient classes

  • (internal) Added various collection classes to simplify managing collections of objects

  • (internal) Added system.h and system-dependend implementation classes

  • (internal) Added Imap4Client::SendCommand() to simplify the Imap4Client implementation

Version 2.0 -- 19 March 2002

  • First release -- incorporates existing code from IMAP4 ToolBuzz and the protocol classes from MIME++

  • Many new features added to existing classes:


    • EHLO command
    • parses server capabilities in EHLO response
    • AUTH PLAIN command
    • AUTH CRAM-MD5 command
    • parses enhanced status codes
    • allows parameters to be added to MAIL and RCPT commands
    • allows mail data to be sent in multiple buffers
    • allows non-standard commands to be sent and the responses processed


    • APOP command
    • AUTH CRAM-MD5 command
    • CAPA command


    • AUTH PLAIN command
    • AUTH CRAM-MD5 command
  • Completely independent from MIME++ (DwString class is not used)

  • Better underlying socket implementation

  • More intuitive error handling

  • Rewritten documentation

  • "Dw" prefix dropped and "mailpp" namespace introduced