SocketTools Internet Mail Release Notes

Version 7.2.7210.1848

  • Modified the .NET components to return errorProductNotLicensed rather than the more ambiguous errorNotConnected in certain situations where a connection could not be established because the component has not been initialized with a runtime license key or the evaluation license has expired.
  • Added the traceProcess option for the TraceFlags property in all .NET components. By default, when the Trace option is used to enable logging, only network events for the current thread are logged. By specifying this option with the TraceFlags property, logging will be performed for the entire process, which is useful for multi-threaded applications that are creating instances of the SocketTools .NET components in worker threads.
  • Changed all .NET components to throw an exception if an invalid license key is specified using the RuntimeLicense attribute. This is an alternate method of providing the runtime license key to the components, rather than explicitly calling the Initialize method. This change is designed to assist developers who inadvertently specify an invalid license key and has no effect on applications that use the Initialize method.
  • Modified the License Manager utility to expand the display of the runtime license key and added a copy button that will copy the license key to the clipboard so that it can be easily pasted into the application source.

Version 7.2.7210.1845

  • Added support for SASL PLAIN authentication in IMAP in addition to the default authentication method. For the broadest compatibility with the different types of IMAP servers, it is recommended that you continue to use default authentication whenever possible.
  • Added the imapOptionIdentify connection option to specify the client should identify itself to the IMAP server. If the server supports the ID command, this option will specify that the client should use it to identify itself. Although this is an optional extension to the protocol standard, some servers may require this to establish a connection.
  • The IMAP ActiveX control and .NET component were modified to include inferior mailboxes (sub-folders) by default when enumerating the list of available mailboxes on the server. To prevent this behavior, set the MailboxMask property to the value "%" and this will cause only top-level mailboxes to be returned by the Mailbox property array.
  • Changed the IMAP components to request supported features before and after authentication, since some servers only return a subset of supported features before a client authenticates. This resolves a problem where the client would not recognize that the server supported a particular option and instead would return an error to the caller.
  • Corrected a problem that could cause .NET applications to throw an exception if the Uninitialize method was called multiple times for any single instance of a class. Typically this was the result of a coding error in the application, however the components now ignore any extraneous calls to uninitialize an instance of a class that has already been uninitialized. Note that disposing of a class instance will destroy that instance and any attempts to re-initialize the class will still result in an exception being thrown.
  • Corrected a problem that could prevent a .NET component from establishing a secure connection if the Initialize method was called more than once. This could also result in the class instance throwing an exception if each call to the Initialize method was not matched with a call to the Uninitialize method. All .NET components were modified to gracefully handle situations where the calls to the Initialize and Uninitialize methods were mismatched over the lifetime of the instance, typically as the result of a coding error.
  • Corrected a problem where a component would create an empty licensing key under HKEY_CURRENT_USER on end-user systems. This was an issue on some systems where the application was executing with restricted privileges and had limited access to the registry.
  • Added SxS (registration free, side-by-side) manifests for the ActiveX controls, they can be found in the "Manifests" folder where SocketTools is installed. For more information on registration-free COM, refer to the MSDN article at http://msdn.microsoft.com/en-us/library/ms973913.aspx
  • Removed references to embedded ActiveX objects in the .NET HTML Help, and made some minor revisions to the HTML Help documentation for all libraries and components.

Version 7.2.7200.1824

  • Corrected a problem in the ExportMessage method that could truncate the last character of a message.
  • Corrected a problem where a component may return a "network not initialized" error when the real problem was an invalid runtime license key.
  • Corrected a problem where an ActiveX control would not initialize correctly if the Initialize method was called after another method, rather than being the first method called.
  • Corrected a problem in .NET components where errorInvalidHandle could be thrown rather than errorOperationNotSupported.
  • Changed the Initialize method to throw System.ObjectDisposedException if it is called after the the Dispose method, rather than simply failing silently.
  • Corrected a problem where the Initialize method would not actually validate a runtime license key if it previously validated a development license on the current system. This would prevent developers from detecting a problem with the license key until they deployed the application to another system.
  • Updated .NET components to throw System.IndexOutOfRangeException and System.ArgumentNullException rather than errorInvalidParameter where appropriate for various properties and methods.
  • Updated .NET components to handle errors more consistently across all components. Invalid property values should always throw an exception and never fire the OnError event. Methods should only throw exceptions if the ThrowError property is true.
  • The HostAddress property in the ActiveX controls and .NET components should always attempt to return the IP address associated with the HostName property if a connection has been established. This is independent of the value of the AutoResolve property.
  • Support for The PCT security protocol has been removed from all components. This security protocol has not been widely used, contains several known security vulnerabilities and is not being actively developed by Microsoft.
  • Support for TLS 1.1 and TLS 1.2 has been added, this requires Windows 7 or later versions. Clients will automatically negotiate for the highest version of TLS supported by the server. Windows XP and Windows Server 2003 will only support TLS 1.0.
  • Added the AllHeaders property the returns all of the RFC822 header values in a string.
  • Added the AllRecipients property to the .NET and ActiveX controls.
  • Improved how the ActiveX control and class handles e-mail addresses that are surrounded in quotes.
  • Added the ExtractAllFiles method that extracts all file attachments, storing them in the specified directory.
  • Added the FindAttachment method that can search for an attached file name.
  • Improved the MIME message parser, with more tolerance for messages that don't strictly conform to the RFC822 or MIME standards.
  • Improved how the SetHeader method checks header values and ensures the caller cannot add headers that would violate the standard.
  • Updated the documentation to be more consistent across the different editions of SocketTools and corrected many errors and omissions.

Version 7.1.7100.1638

  • Corrected a problem where the incorrect number of message recipients would be returned under certain circumstances, such as a malformed address or extraneous comma or semi-colon characters in the address.
  • Updated several sections of the documentation.

Version 7.1.7100.1621

  • There have been general improvements to network performance and IPv6 compatibility, and several issues have been resolved that were specific to IPv6 support on Windows XP, Windows Server 2003 and Windows Vista.
  • Corrected a problem that could result in a memory leak if the message contained a large number of file attachments, or contained a single large attachment.
  • Corrected a problem decoding a very large attachment that was encoded using base64. It could cause the application to become non-responsive or generate an exception and terminate unexpectedly.
  • Corrected a problem with the InternetDialer class that could cause a 32-bit application to throw an unhandled exception when the class was initialized on a 64-bit Windows system running under WoW64.
  • Corrected a problem that could cause an error message to be displayed when Data Execution Prevention (DEP) was enabled on the platform and an instance of the ActiveX control was created using CreateObject in VBScript or another scripting language.
  • There have been general improvements and corrections to the documentation, and corrections to several internal help links that referenced invalid sections of the technical reference.
  • The installer will now include a separate copy of redistributable files, and this will include both 32-bit and 64-bit components, even if the installation is being performed on a 32-bit Windows system. 32-bit components are found in the x86 folder, and 64-bit components are found in the x64 folder.
  • The Windows 2000 platform is no longer considered a supported platform for SocketTools and all related products. While an application may continue to work under Windows 2000, we can no longer provide technical support for this version of Windows. The minimum supported platform for SocketTools is Windows XP with Service Pack 3 (SP3) installed. Note that Microsoft discontinued support for Windows 2000 and Windows XP SP2 in July, 2010 and those platforms are no longer receiving updates.

Version 7.0.7000.1451

  • Corrected a problem where an invalid IP address could be returned for a hostname on a Windows XP system that did not have an IPv6 stack installed and configured. When this error occurred, applications would work correctly on Windows 2000 and Windows 7 systems, but could not establish connections on a Windows XP system.
  • Corrected a problem where enabling logging could cause the current thread to discontinue writing to the logfile after a connection was made, and in some cases could cause the application to stop working or become non-responsive.

Version 7.0.7000.1431

  • The SocketTools Internet Mail products have been combined and now include both the .NET component and ActiveX control. Developers are free to choose the type of component that best meets the needs of their project, and can easily migrate from an application built using the ActiveX control to the .NET platform.
  • Includes support for both IPv4 and IPv6 networking protocols. Currently, IPv4 continues to be the most widely used version of the protocol and remains the default used by the controls. An IPv6 connection will only be made if an IPv6 address is specified, or if the domain name for a given host resolves to an IPv6 address. The most significant change an application will need to make is to recognize the new IPv6 address format, and provide enough space to store an IPv6 address, which is larger than an IPv4 address.
  • Updated to include support for both 32-bit and 64-bit platforms. The .NET assemblies have been updated to target both x86 and x64 platforms, and both versions of the native interop libraries are included with the installation. Both 32-bit and 64-bit ActiveX controls are also included with the product.
  • Updated for full compatibility with Windows 7 SP1 and Windows Server 2008 R2, with improvements in performance and functionality. It is recommended that applications which target these platforms upgrade to the current version.
  • Updated the documentation for the version 7.0 release and example projects.