CPJNSMTPConnection Publisher's description
from Naughter Software
Welcome to CPJNSMTPConnection, a collection of MFC classes to support the SMTP protocol.
Welcome to CPJNSMTPConnection, a collection of MFC classes to support the SMTP protocol. SMTP for those not familiar with all the internet protocols is the protocol used to send internet email.
Also included with the SMTP classes in the download is a class called "CPJNMD5Hash" which provides for calculation of MD5 hashes and HMACs using the MS Crypto API as well as a class called "CNTLMClientAuth" which provides a reusable client side implementation for NTLM authentication. A header file called "PJNLoadLibraryFromSystem32.h" is also included which provides a version of LoadLibrary which loads a DLL without any path information from the Windows System directory. This helps avoid DLL planting security issues in your application when you call LoadLibrary with a module name without any path information.
Simple and clean C++ interface.
The interface provided is synchronous which provides an easier programming model than using asynchronous sockets.
The code does not rely on the MFC socket classes. These classes have a number of shortcomings, one of which causes problems when they are used in NT services.
The code can be used in a console application without any problems (Again this is not the case for the MFC socket classes).
A configurable timeout for the connection can be set through the class API.
The classes are fully Unicode compliant and include Unicode built options in the workspace file.
As of v1.1, the classes now fully supports sending file attachments.
Multi CC, BCC & Reply To support is included.
Support for regular email address formats and multiple email address parsing.
Full support for MIME and MHTML (aka HTML Email).
Full support for MIME Charsets.
Comprehensive sample program included which exercises most of the classes functionality.
As of v2.61, the classes now fully support sending email over SSL. This means that for instance you can use the Gmail SMTP server "smtp.gmail.com" on port 465. Also note that all of the other features such as authentication are fully supported over SSL. For example to use Gmail you will require some form of authentication such as AUTH PLAIN because it does not operate as an open relay (which would facilitate spam).
Supports numerous authentication protocols including "AUTH CRAM-MD5", "AUTH LOGIN", "AUTH PLAIN" and "AUTH NTLM". An "Auto Detection" form of authentication is also supported. In this mode, the authentication protocols supported by the server are detected and the most appropriate protocol is used.
As of v2.65, the classes include comprehensive support for DSN's (Delivery Status Notifications).
As of v2.70, the classes are only supported on VC 2005 or later.
As of v2.84, the classes include support for MDN's (Message Disposition Notifications)
As of v2.86, the classes support STARTTLS. This SMTP command allows a standard SMTP plain text connection to be made and assuming the SMTP server supports STARTTLS, the connection can be upgraded to a encrypted connection mid stream. Often SMTP servers only offer STARTTLS via port 25 instead of SSL / TLS on a different port.
Optionally supports Address header encoding.
What's New in This Release:The ConvertToUTF8 method now also handles conversion of ASCII data to UTF8. Thanks to Jean-Christophe Voogden for this update.
The CPJNSMTPConnection class now provides Set/GetSSLProtocol methods. This allows client code to specify the exact flavour of SSL which the code should speak. Supported protocols are SSL v2/v3, TLS v1.0, TLS v1.1, TLS v1.2 and DTLS v1.0. This is required for some SMTP servers which use the SSLv2 or v3 protocol instead of the more modern TLS v1 protocol. The default is to use TLS v1.0. You may need to use this compatibility setting for the likes of IBM Domino SMTP servers which only support the older SSLv2/v3 setting. Thanks to Jean-Christophe Voogden for this update.
Removed all the proxy connection methods as they cannot be easily supported / tested by the author.
Reworked the code in CPJNSMTPConnection::ConnectESMTP to handle all variants of the 250 response as well as operate case insensitively which is required by the ESMTP RFC.
Made more methods virtual to facilitate further client customisation
Fixed an issue in the DoSTARTTLS method where the socket would be left in a connected state if SSL negotiation failed. This would result in later code which sent on the socket during the tear down phase hanging. Thanks to Jean-Christophe Voogden for reporting this issue.
The sample app is now linked against the latest OpenSSL v1.0.1f dlls.
System Requirements:No special requirements.
Program Release Status: Major Update
Program Install Support: Install and Uninstall