- 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 Server 2003 |
5.20.3790 |
| Windows Vista |
6.0.6000 |
| Windows Server 2008 |
6.0.6001 |
| Windows 7 |
6.1.7600 |
For Windows 2000, it is required that Service Pack 4 (SP4) be installed. For Windows XP,
Service Pack 2 (SP2) must be installed and Service Pack 3 (SP3) is recommdended. It is
recommended that developers using Windows Vista install Service Pack 2 (SP2).
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.
- 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.
- 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.
- 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 4.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++.