Catalyst Internet Mail Control FAQ

1. What is the Catalyst Internet Mail control?
The Catalyst Internet Mail control is an ActiveX control which provides comprehensive e-mail functionality to your applications. The Internet Mail control is a single component which implements the standard protocols for composing, sending and retrieving e-mail messages. The Internet Mail control is a single component which makes development and deployment significantly simpler, not a repackaged collection of controls. The control was built on the foundation of the SocketTools core libraries, offering the same stability and features using a new, streamlined interface.
2. What are the minimum system requirements?
The Catalyst Internet Mail control is a 32-bit ActiveX component which requires Windows 2000 or later versions of the Windows platform. The minimum memory and disk space requirements for end-users are the same as for the base operating system. The following table lists the minimum operating system versions required:
Operating System Minimum Version
Windows 2000 5.00.2195
Windows XP 5.10.2600
Windows 2003 Server 5.20.3790
Windows Vista 6.00.6000
For Windows 2000, it is required that Service Pack 4 (SP4) be installed. For Windows XP, Service Pack 2 (SP2) must be installed.

Developers can use the control in any language which fully supports the ActiveX control specification and/or COM objects. Visual Basic 6.0, Visual FoxPro 8.0 and Visual C++ 6.0 are the minimum versions of the Microsoft Visual Studio languages which are supported.
3. Are there multiple components in this product?
The Catalyst Internet Mail product consists of a single ActiveX control and includes everything that is needed to compose, send and retrieve e-mail messages. This is not a collection of repackaged SocketTools controls but rather a completely new component designed to make it even easier to incorporate e-mail functionality in your applications. Although based on the core networking, protocol and message handling libraries in SocketTools, the Internet Mail control is a different product line and sold separately from SocketTools.
4. What is the difference between this product and SocketTools?
SocketTools is an extensive collection of ActiveX controls and libraries which implement a variety of Internet protocols. Designed as a general purpose Internet development toolkit, each component is designed to provide support for an individual protocol or standard. If the design of an application calls for using multiple protocols, the developer is responsible for creating the code that connects the different controls together in the application. For example, to create a full-featured e-mail application, the developer would need to use four components: the POP3 control to retrieve messages, the SMTP control to send messages, the DNS control to perform mail exchange (MX) record queries and the MIME control to compose and parse messages.

On the other hand, the Internet Mail control incorporates support for all of these protocols and standards in a single component using a single interface, which significantly reduces the complexity of the application. In turn, this reduces the amount of time being spent incorporating and testing the application's e-mail related features, allowing the developer to focus on the core application code.

SocketTools is an excellent product for those developers who need a powerful, comprehensive toolkit with lower-level support for a wide variety of Internet protocols. However, those developers who just want to add e-mail functionality to their applications without writing a lot of code or redistributing multiple components will prefer the Catalyst Internet Mail control. Those developers who are currently using SocketTools can also use the Internet Mail control in conjunction with other components and/or libraries in SocketTools.
5. Can the control be used with Visual Studio 6?
Yes, the ActiveX control can be used with Visual Studio development tools such as Visual Basic, Visual FoxPro and Visual C++. The product includes example programs and the documentation includes additional reference material specifically for Visual C++ programmers who wish to use the control in their projects. Scripting languages such as Visual Basic Script are also supported, and the control can be used as an object in server-side scripting environments such as ASP.
6. Can the control be used with Visual Studio .NET languages?
Yes. The Internet Mail .NET Edition includes managed code classes written specifically for the .NET Framework and can be used with either Visual Studio 2008, Visual Studio 2005 or Visual Studio .NET 2003. The ActiveX control in the original Internet Mail Control can also be used with Visual Studio .NET through a COM interop wrapper, however there can be a significant performance penalty when using ActiveX controls in a managed code application. It is recommended that developers who are programming using Visual Studio .NET upgrade to the Internet Mail .NET product.
7. What standard protocols are implemented by the control?
The control implements the Post Office Protocol (RFC 1939) and Internet Message Access Protocol (RFC 3501) to manage messages on the mail server. The Simple Mail Transfer Protocol (RFC 821) and SMTP Service Extensions (RFC 1869) are used to deliver messages. The Multipurpose Internet Mail Extensions (RFCs 2045, 2046, 2047) define the structure of an e-mail message and are used when composing new messages or processing existing messages.
8. Does the control support secure connections?
Yes, the control implements three standard security protocols: Secure Sockets Layer (SSL) versions 2.0 and 3.0, Private Communication Technology (PCT) version 1.0 and Transport Layer Security (TLS) version 1.0. The Secure property determines if a secure connection is established. There are a number of related properties which return details about the certificate and encryption used. Refer to the technical reference documentation for more information.
9. Does the control require any third-party libraries?
No, the control is completely self-contained with no dependencies on third-party libraries or Microsoft support libraries.
10. Does the control use the Microsoft WinInet library?
No, the control does not use Microsoft's proprietary WinInet library to establish secure connections. It is not required that you redistribute this library with your software unless you make use of it elsewhere in your application. The control uses the standard Windows Security Support Provider Interface (SSPI), which is modeled after the Generic Security Service (GSS-API) interface outlined in RFC 2078.
11. Are there any royalties or runtime licensing fees?
No, there are no runtime licensing fees and there are no restrictions on the number of products that you can create using the Catalyst Internet Mail control. Applications created using the control may be redistributed to any number of end-users.
12. Is there an evaluation copy of the product available?
Yes. If you choose to install the product without a serial number then it will be installed with an evaluation license that is valid for a period of thirty (30) days. The software is fully functional during the evaluation period, however you will be unable to create redistributable applications using the control. In other words, you will be able to create and test applications on the system on which the evaluation license was created, but you will not be able to run those programs on any other system until you purchase the product.

Catalyst Internet Mail .NET

1. What is the Catalyst Internet Mail .NET class?
The Internet Mail .NET class is a managed code component designed specifically for the Visual Studio 2008, Visual Studio 2005 and Visual Studio .NET 2003 development tools. The .NET class is ideal for the developer who is programming in Visual Basic .NET or C# on the Windows platform. It provides an interface that is similar to the original Internet Mail ActiveX control, however it is designed and optimized for use with the .NET Framework.
2. What is the difference between the .NET class and ActiveX control?
Both the .NET class and the ActiveX control provide the same general functionality and have similar interfaces, however the .NET component is a managed code class which use the Common Language Runtime (CLR) and requires that the user have the .NET Framework installed on their system. The ActiveX control is primarily designed for older development tools such as Visual Basic 6.0. While the ActiveX control can be used with .NET languages, they can incur a significant performance penalty. The .NET component does not use COM interop and doesn't have the inherent performance issues that ActiveX controls do. The .NET component also simplifies redistribution and provides a native interface that is easier to work with.
3. What language was the .NET component written in?
The Internet Mail .NET component was written in Visual C#. It is important to note that it can be used in Visual Basic .NET without any limitations. Because it is a managed code component that uses the Common Language Runtime (CLR), the .NET component is compatible with any Visual Studio programming language and the interface is the same regardless of the language being used. The product includes examples written in both Visual Basic .NET and Visual C#.NET.
4. Does the .NET component support multi-threading?
Yes, the Internet Mail .NET component is thread-safe and can be safely used in a multi-threaded application. In fact, we recommend that most applications use a multi-threaded design with worker threads performing the file transfers. This allows the main UI thread to remain responsive to the user while the Internet Mail component does its work in the background.
5. Does the .NET component support events?
Yes, the Internet Mail .NET component supports events to notify the application when certain actions are taken or a network event occurs. For example, the OnProgress event will be periodically generated during the file transfer process so that you can update your user interface. Typically this is used to update a progress bar so the user can see how much of the file transfer has completed. There are a number of other events as well.
6. Can the Internet Mail .NET component be used with Visual Basic 6.0?
The Internet Mail .NET component is a managed code class which requires the .NET Framework and a programming language which can generate Common Intermediate Language (CIL) bytecode. It does not expose a COM interface and cannot be used with Visual Basic 6.0 or earlier Visual Studio programming languages. The minimum version of Visual Studio required for development is version 7.1.3088 (Visual Studio .NET 2003) and the minimum version of the .NET Framework required for development and redistribution is version 1.1.4322 (SP1).
7. What operating systems are supported with with the Internet Mail .NET component?
The Internet Mail .NET component is designed to work with Visual Studio 2008, Visual Studio 2005 or Visual Studio .NET 2003, and requires Windows 2000 or later versions of the Windows operating system. Windows 95, Windows 98, Windows Me and Windows NT are not supported. The user must have a least version 1.1 of the .NET Framework installed on their system. If they do not have the Framework installed, it can be downloaded through Windows Update. If the user is running Windows XP, the Framework is part of the Service Pack 2 (SP2) update. Windows Vista includes both version 1.1 and version 2.0 of the .NET Framework.
8. Should I purchase the .NET component if I already use the ActiveX control?
If you are currently using the ActiveX control with Visual Basic .NET or Visual C#.NET then we strongly recommend that you move to the Internet Mail .NET component. You'll see improved performance and a more natural interface that makes the product much easier to work with. If you're planning on migrating your application to the Visual Studio .NET platform, many of the the properties, methods and events are the same. Although there are some differences between the two editions in terms of the interface, those differences are minor. Both products support the same Internet application protocols and have the same general functionality.

Licensing Questions

1. What are the general terms of the license agreement?
The complete license agreement for the product can be found in the online help. In general terms, it permits you to install a single copy of the product on your computer system, use the product to build application software and redistribute that software to your end-users. There are no runtime licensing fees, and there are no restrictions on the number of products which may be developed using the control.

There are two primary restrictions, the first being that the product is only licensed for a single developer. The second restriction is that you may not use the control to create a software development product which is then used and/or resold by your customers. In other words, you may use the control to build application software, but you are not permitted to create software development components or libraries which are then used by your customers to create software which, in turn, they distribute to end-users. If you have any questions regarding the licensing agreement, please contact us.
2. What are the limitations of an evaluation license?
The control is fully functional during the evaluation period and the same code that you develop during the evaluation period can be compiled and used once you have purchased the product. However, there are two limitations to consider when developing software using an evaluation license. First, the control will cease to function after the evaluation period has expired. This means that you will not be able to load it into your development environment, and any application that uses the control will no longer function. Second, you cannot redistribute any application created using the control with an evaluation license. An application that is created using an evaluation license will only function on the development system where the license is installed. Once you have purchased a license, you only need to recompile your application with your new, registered license.
3. Is a license required for each developer using the control?
Yes, a license is required for each developer who is using the control. It is a violation of the terms of the license agreement for more than one developer to use the same copy of the product. However, the same developer may install the control on more than one system as long as there is no chance that it will be used by another developer. For information about purchasing additional licenses, please contact us.
4. Does this product require activation or online registration?
No, this product does not require electronic activation or registration. We feel that this is too restrictive for developers who frequently must develop and test applications on multiple platforms. Although online registration is not required, it is recommended because this entitles the developer to technical support and free service pack updates to the product.
5. What is the runtime license key?
When the product is installed with a serial number, a runtime license key will be created which is used by the control to validate that a licensed copy of the product has been purchased. For languages like Visual Basic, the license key is managed internally and doesn't require any additional coding by the developer. However, some languages don't directly support the use of runtime license keys so the control must be initialized with the license key by calling the Initialize method. The key itself is stored in the \Include folder where the product was installed. For more information, refer to the online help for the Initialize method. Please note that the product serial number is NOT the license key.
6. Can the control be used with Active Server Pages?
Yes, the control can be used in Active Service Pages by using the function CreateObject to create an instance of the object. The class name for the object is SocketTools.InternetMail. Note that the use of CreateObject requires that the control be initialized with a runtime license key by calling the Initialize method after the control has been created.
7. Why do I get a licensing error when redistributing my application?
There are two common reasons that a licensing error may occur when attempting to execute an application on another system. If the control was installed with an evaluation license, then the control can only be used on the development system during the evaluation period. Attempting to use an evaluation copy of the product will generate an error if the application is installed on another system.

If a development license has been purchased and registered on the development system, then it may be that the language does not support the appropriate interface to automatically manage the runtime license key. For example, using the CreateObject function to create an instance of the control will cause a licensing error when the application is redistributed to another system. The control's Initialize method must be called immediately after the control has been created, specifying the runtime license key as one of the arguments.

Development Questions

1. Can the control be used to create HTML e-mail messages?
Yes, the ComposeMessage method can be used to easily create HTML formatted e-mail messages, along with an alternate plain text version of the message for those mail clients which cannot display HTML. For example, the following code in Visual Basic could be used to create an HTML message:

InternetMail1.ComposeMessage(strFrom, strTo, strCc, strBcc,
                             editSubject.Text, _
                             strMessageText, _
                             strMessageHTML)
The strMessageText argument would contain the plain text version of the message body, while the strMessageHTML argument would contain the HTML version. Refer to the online technical reference documentation for more information.
2. Can the control be used to attach files to messages?
The AttachFile method can be used to attach any type of file to an e-mail message. Attachments to both standard plain text messages as well as to HMTL messages is supported. For example, the following Visual Basic code would attach a file that was entered into an edit control:

If Len(editFileName.Text) > 0 Then
    InternetMail1.AttachFile(editFileName.Text)
End If
Binary files are automatically encoded using the standard base64 algorithm, while text files may be included inline or explicitly encoded. Refer to the online technical reference documentation for more information.
3. Can the control be configured to use relay mail servers?
Yes, two properties named RelayServer and RelayPort can be specified so that the control sends all messages through the relay server rather than delivering the message directly to the recipient.
4. How do you send messages to multiple recipients?
There are three properties which determine the recipients for an e-mail message. The To property specifies the primary recipient of the message, while the Cc property specifies those recipients who should receive a copy of the message. Multiple addresses may be assigned to each property by separating each address with a comma.

The Bcc property specifies recipients who should receive a "blind" copy of the message; in other words, the message is sent to the specified recipient, but the address is not included in the message header so that the other recipients are unaware to whom it was sent. The Recipients property and Recipient property array can be used to enumerate the recipient addresses that have been specified for the current message.
5. How do you check if a message contains file attachments?
The Attachment property returns the name of an attached file in the current message part. If there is no attachment, then the property returns an empty string. The following example, in Visual Basic, demonstrates how a program could check the current message to determine if it contains any file attachments:

bHasAttachments = False
	
For nPart = 0 To InternetMail1.MessageParts - 1
    InternetMail1.MessagePart = nPart
    If Len(InternetMail1.Attachment) > 0 Then
        bHasAttachments = True
        Exit For
    End If
Next
The MessageParts property returns the current number of parts in a multipart message. The For..Next loop iterates through each message part, checking the value of the Attachment property, and if it returns something other than an empty string then the message contains an attachment and the loop is exited.
6. How do you check if a user's mailbox has new messages?
To check a user's mailbox for new messages, the application must establish a network connection with the mail server using the Connect method and then check the MessageCount property which will return the number of messages in the mailbox. The following Visual Basic code demonstrates this:

Dim nError As Long

nError = InternetMail1.Connect(editServerName.Text, , _
                               editUserName.Text, _
                               editPassword.Text)
If nError Then
    MsgBox "Unable to connect to " & editServerName.Text & vbCrLf & _
    InternetMail1.LastErrorString, vbExclamation
    Exit Sub
End If

If InternetMail1.MessageCount > 0 Then
    MsgBox "This mailbox has " & InternetMail1.MessageCount & _
           " new messages available", vbInformation
End If

InternetMail1.Disconnect
Note that this example presumes that new messages are eventually downloaded by the client and deleted from the server. For more information about retrieving e-mail messages, refer to the online technical reference.
7. Does the control support the IMAP4 protocol?
Yes. The control supports both the POP3 and IMAP4 protocols, and the application can specify which protocol it wishes to use when connecting to the mail server. For more information on how to specify which protocol should be used, refer to the ServerType property in the documentation. Note that IMAP4 support was added in version 5.0 and is not available in previous versions of the control.
8. Does the control support APOP authentication?
Yes. Set the Options property to the constant value mailOptionAPOP or specify that option to the Connect method. This causes the control to use APOP authentication instead of the standard username and password authentication which is used by default. Refer to the Options property in the online technical reference for more information.
9. Does the control support secure (SSL) connections?
Yes. Set the Secure property to a value of True and secure connections will be established with the mail server. Note that this requires that the server support the standard SSL/TLS extensions. Secure connections using the SMTP protocol are only established if a relay server has been specified; otherwise a non-secure connection will be used to deliver messages regardless of the value of the Secure property.
10. Can the ActiveX control be used in Visual Basic without a form?
Yes, there are two ways that the control can be used without a form in Visual Basic. One is to create a reference to the control by selecting Project | References from the menu, then clicking on the Browse button and selecting the control's file name. Then, in the program, an instance of the control can be created using the Dim statement as follows:
Dim objInternetMail As New InternetMailCtl.InternetMail
The other approach is to use the CreateObject method:
Dim objInternetMail As Object
Dim strLicenseKey As String

Set objInternetMail = CreateObject("SocketTools.InternetMail.5")
objInternetMail.Initialize strLicenseKey
Note that the strLicenseKey value must be obtained from the csimkey5.bas module that was created in the \Include folder where the product was installed. The Initialize method must be called explicitly when using the CreateObject function; otherwise a licensing error will occur when redistributing the application.
11. Can the control be used with Visual C++?
Yes, the control can be used in Visual C++ using one of several methods. The simplest is to include the control in the project and place it on a dialog, which is similar to using the control with a Visual Basic form. Other methods include using a CWnd derived class and creating an instance of the control dynamically or using the #import directive to import the the control into the project. The control can also be used as a COM object and created using the lower level COM API. Refer to the online Technical Reference which contains detailed information about using the control with Visual C++.

Product FAQs

ActivePatch
Information about ActivePatch, the file patching toolkit.


File Transfer Control
Information about the Catalyst File Transfer control.


Internet Mail Control
Information about the Catalyst Internet Mail control.


SocketTools Editions
Information about the SocketTools suite of products.


SocketTools Subscription
Information about the SocketTools subscription plan.


SocketWrench Editions
Information about the SocketWrench components.


Other FAQs

Product Licensing
Product licensing information for customers and evaluators.


Technical Support
Technical support options and policies for developers.