Version: 4.3.5.0
Send, receive, edit, sign/verify and encrypt/decrypt email messages in any .NET application or service. 

PowerTCP Mail for .NET enables software developers to add mail capabilities to .NET Windows and ASP.NET applications. In addition, the option of securing the connection to the mail server ensures that data cannot be intercepted, while allowing servers and clients to be authenticated. Written in C#, the components and objects include support for SMTP, POP3, IMAP4, and S/MIME. The core MailMessage class is designed for message creation and editing, with the protocol classes for sending, receiving and managing emails. Security options include support for TLS, SSL 3.0 and SSL 2.0, plus the ability to auto-negotiate connections with secure mail servers. Support is also included for client and server authentication using x.509 digital certificates.  S/MIME signing, encryption and decryption is fully supported.

Background:
E-mail technology is based on three transfer protocols, SMTP, POP, and IMAP, plus protocols that describe the structure of mail messages. The MIME protocol defines complex message structure, several common encoding techniques such as Base64 and Quoted-Printable. The SMTP protocol is used for sending mail messages across the Internet, the POP protocol is used for downloading mail messages, and the IMAP protocol extends capabilities beyond POP to email management. While mail protocols are most often used for traditional mail applications such as Outlook, they are also utilized for application notification systems, proxies, and automated e-mail scanning systems.

Modern mail servers support the ability to establish secure connections using public-key encryption. The PowerTCP Mail for .NET component supports both Explicit and Implicit techniques for establishing secure connections. Both methods allow users to be authenticated, and ensure that data is secure.

Technical Solution:
PowerTCP Mail for .NET includes three .NET components for SMTP, POP, and IMAP that enable sending, receiving, and managing messages on a remote server, while providing the options of x.509 certificate authentication and data encryption. The Dart MailMessage class, which handles MIME encoding and decoding, is used for authoring new messages, or editing and reviewing received messages.

To simplify complex message creation, HTML messages can be constructed by either passing the location of an HTML page, or the actual HTML data, to a constructor of the MailMessage class. Once initialized with the HTML data, the MailMessage will expose the different parts of the message in an object-oriented manner.

Multi-national character sets are supported for both encoding and decoding. This allows for the creation of messages that are targeted for other countries. By default, new messages use the character set of the operating system so using the product in any country is seamless.

The Smtp component supports DSN (Delivery Status Notification). Support for advanced mail features such as SIZE (verifying if the message size is larger than the server will allow) is also included. For ease-of-use, the component can send a MailMessage object or just text. As a message is sent, MIME encoding occurs on the fly.

The Pop component includes the ability to download complete messages or just header information, and easy access to all messages as an array.

The Imap component is based on some of the latest revisions to the IMAP protocol. All major IMAP capabilities are included such as searching, listing, subscribing/unsubscribing, and retrieving message sections. Mailboxes are accessed as a collection and the Imap component tracks the currently selected mailbox. Support for advanced features such as Idle, in which the server sends unsolicited updates about a mailbox, is included.

Security can easily be turned on or off by setting a property, and Certificates are managed through the .NET X509Store. After receiving a certificate, it may be examined to decide its validity. For example, if the domain name or the Certificate Authority does not meet security requirements, the application can choose to end the connection rather than authenticate the remote host.

Technical Innovation:
The Smtp, Pop, and Imap components are designed for ease-of-use, while preserving flexibility when requirements change. All components support Implicit and Explicit security, as servers can support both these implementations.

The heart of PowerTCP Mail for .NET is the MailMessage class. The MailMessage handles MIME encoding/decoding and performs these operations on-the-fly when passed to the Smtp component, or retrieved with the Pop or Imap components. The different characteristics of a message are represented in an object-oriented manner through properties, with all parts recursive. Parts are kept as collections of none-MIME text, non-MIME attachments, simple in-line MIME parts, MIME attachments, and complex (multi-part) MIME parts. This allows for the fine-tuning of the message structure. If such low-level control is not required, a higher-level collection of general attachments is also available.

The MailMessage class also has the ability to save a message to disk. The resulting message can easily be loaded using Outlook Express or any other mail client that supports ASCII mail messages. Conversely, a message (such as one saved with Outlook Express) can be loaded into a MessageStream from disk. The save and load capabilities perform an automatic encoding and decoding operation respectively.

The Imap component is designed to present a local representation of a remote server while preserving the hierarchical structure of the mailboxes in an object-oriented manner. This means that the structure of an account on a remote server is represented as a collection of mailboxes that can be queried for their messages and child mailboxes. The architecture is recursive, allowing for access to every subordinate level of mailboxes. At any time, a mailbox can be added, deleted, or modified.

Developers can choose to write code in a blocking manner, meaning that execution of code does not proceed until a function call (such as getting all the messages from a server) completes. Alternatively, code can be written in a multi-threaded manner by using the integrated Start method, and using Marshal to raise events back on the UI thread. Allowing for both approaches enables users to choose their preferred method of development, based on the needs of their application.

Usage Scenarios
Typical usage of PowerTCP Mail for .NET includes the creation of custom mail client applications, as well as the incorporation of mail handling capabilities into different types of applications. These applications include Web Mail client implementations designed to work with corporate mail servers. E-mail protocols are also useful as notification mechanisms. An application can send emails to specific individuals when notable situations occur, or check the mail server for messages that indicate a need to take certain actions. Imap is often used for automated management tasks, such as checking messages in a particular mailbox for spam.

Details:

 

Feature PowerTCP Major Competitors Native .NET
Standards Compliance Complies with email RFCs for SMTP (2821, 2822), POP3 (1939, 2449), IMAP4 (3501), MIME (2045, 2046, 2047, 6532), S/MIME (2633, 3851, 5751) Follow RFC 822, 821, 1939, 1869, 1891, and parts of 2060. Supports 822 and 821.
Licensing Per Developer/Royalty Free Per Developer/Royalty Free Simple SMTP part of Framework
HTML Mail Support Can be created from a file location using Open() or any other source of data using the MailMessage constructor. Varies. Limited
Support for Mail Security Supports both Implicit and Explicit security. Usually only support a single option or no security. Not Available
Certificate Management Interoperates with the .NET X509Store, and uses the LocalCertificateSelectionCallback and the RemoteCertificateValidationCallback for easy certificate selection and validation. Varies. Not Available
Encoding Support Base64, Quoted-Printable and UUEncode. Varies. Base64 and UUEncode
Message Handling A MailMessage class that represents a message in an object-oriented manner and allows for messages to be saved/loaded to/from disk. Can be used with all mail components. As a string that requires manual parsing or limited object support. Allows for simple message construction
Part Handling Parts are handled as recursive collections, with the ability to filger by type of part, but also include higher-level attachment support. Varies from simple arrays to a collection of attachments. Allows simple file attachments represented as an array.
IMAP Capabilities Supports latest IMAP capabilities and a local representation of a remote server while preserving the hierarchical structure of the mailboxes. Limited IMAP feature support and limited ability to transverse a Mailbox structure. Not Available
POP Capabilities Presents messages as an array and includes numerous code-saving features. Little code-saving features and often requires users to parse for specific information. Not Available
SMTP Capabilities Supports DSN and other modern features such as SIZE. Varies. Simple message sending. No advanced features.
Methodology for Sending Commands to the Server Data is sent using methods and can be received in either a method for synchronous operations or using Start() for multi-threaded operation. Data is sent using methods and received in an Event. No event notification for sending. Other commands not supported.
Architecture Both Synchronous (blocking) and Asynchronous (non-blocking) using multi-threading. Asynchronous Only (non-blocking) Synchronous only.
Samples Ships with ASP.NET, C#, and VB.NET samples Varies .NET Documentation
Design Data is managed using overloaded methods that support different datatypes, plus full access is granted to the underlying TCP connection for advanced usage. Data is handled with strings or bytes through different methods. Designed for sending basic messages.
Documentation Comprehensive help that is integrated with the Visual Studio IDE using the Help 2.0 engine with full dynamic help and tutorials. Use the Help 1.3 engine and provide minimal documentation. Limited