Home > Web Site Updates > CPJNSMTPConnection v3.41

CPJNSMTPConnection v3.41

September 13, 2020

Just to let everyone know that v3.41 of CPJNSMTPConnection has been released. Updates for this version include:

  • CPJNSMTPConnection is now derived publically from SSLWrappers::CSocket. This allows all the public methods of SSLWrappers::CSocket to be accessible from client code. Thanks to Martin Richter for prompting this update.
  • Provided a new virtual CPJNSMTPConnection::TraceCommunication method. This method allows you to see all the data sent and received by the class for diagnostic purposes. For example you could provide an option in your app to log the data for customer support issues. Thanks to Martin Richter for providing this update.
  • Improved the error handling in CPJNSMTPAddress::PunyCode to handle errors reported by the underlying Win32 API of IdnToAscii which the code uses to do PunyCode encoding of email addresses to support International email and internationalized email addresses. The issue is that the code uses an "IDN_EMAIL_ADDRESS" flag to this IdnToAscii API and this flag is only supported on versions of Windows starting with Windows 8. On earlier versions of Windows such as Windows 7 and Windows 2008 R2, this API fails when you use the IDN_EMAIL_ADDRESS flag. The code now handles this error by throwing an exception rather than ignoring the return value from the API. Previously when the code ignored the return value, it would then crash when it tried to dereference a zero length string. If you must run this code on now unsupported versions of Windows, then please make sure you disable Punycode encoding using the new functions described in the next release note below. Thanks to Darron Redman and Martin Richter for reporting this issue.
  • Added a new boolean configuration value to the CPJNSMTPConnection class to determine if punycode encoding should be used. These new methods are SetUsePunyCode and GetUsePunyCode. As described in the previous release note this is necessary to support the code running without errors on versions of Windows earlier than Windows 8. I have added a checkbox to the sample application to demonstrate using this. By using SetUsePunyCode(false), the code will not of course be able to support internationalized email addresses on these downlevel versions of Windows.
Categories: Web Site Updates
%d bloggers like this: