E-mail components seamlessly combine security, efficiency, and ease of use so you can quickly develop custom e-mail handling applications. Includes classes for creating, sending and receiving email. C# and VB code snippets and sample applications will give your project a boost. Try our on-line WebMail app for a quick demo!
Consulting and Custom Development
From email creation to complete mail systems, let our experienced staff help with your Mail project. Here are some of the solutions we have delivered.
Manage email using standards-based protocols
Simple Mail Transfer Protocol (SMTP) and Post Office Protocol (POP3) components send and receive email, respectively
Internet Message Access Protocol (IMAP4) component manages email on IMAP4 servers (Office 365, Gmail, Yahoo, Exchange, etc.)
Multipurpose Internet Mail Extensions (MIME) enable the encoding and decoding of non-ASCII data like international UNICODE text and binary data
Secure/Multipurpose Internet Mail Extensions (S/MIME) version 3.0, 3.1, 3.2 enable message signing (authentication) and encryption (privacy)
Messages can be sent via relay servers, intermediate mail servers, or directly to recipients' domain mail servers
Send simple email with a single line of code, or build a complex MailMessage and send it
Delivery Status Notification (DSN) fully supported
Fast - On-the-fly message encoding eliminates intermediate files and delays by streaming encoded message data from the source MailMessage to the destination server - Supports pipelining of commands without waiting for server acknowledgments
Easy message management - default behavior populates message size and id without downloading message content
Dynamic message retrieval - populate selected messages with just the header, header plus a little content, or the entire message
Fast on-the-fly message decoding eliminates intermediate files and delays by streaming encoded message data from the source server to the destination MailMessage
IMAP4 downloads mail too, and adds remote mail management
IMAP4 commands synchronize the local object model with the server (change the local model and the server is changed)
ImapMessage class represents a message in a mailbox - use to change server-side message flags and get a single message
Mailbox class represents a server-side mailbox that contains messages - use to alter mailbox properties, enumerate messages, get messages in bulk and append new messages
MailboxCollection class represents child mailboxes - use to manage nested mailboxes
Update event informs client of dynamic updates to the selected mailbox
Retrieve an entire message, headers only, attachments only, or any part desired
Fast on-the-fly message decoding eliminates intermediate files and delays by streaming encoded message data from the source server to the destination MailMessage
MailMessage class at the core of the system
Represents a decoded MIME, Secure MIME (S/MIME), or non-MIME (straight ASCII) Internet email message
Dynamic encoding occurs when the encoding stream is read from; dynamic decoding occurs when encoding stream is written to
Can be used independent of protocol components as a general-purpose MIME or S/MIME encoder/decoder
Rich object model represents each header, text, html, attachment, part, and resource element
Attachments are decoded and stored in temp files by default, but can optionally be stored in MemoryStreams if disk access is not desired
Integrated security protects data at 3 levels
Level 1: comprehensive login options authenticate the client to the server; OAuth 2.0 (XOAUTH2),GSSAPI, NTLM, LOGIN, and more!
Level 2: SSL2, SSL3, PCT, TLS 1.0, 1.1, 1.2, 1.3 implements end-to-end encryption between your application and the email server
Level 3: S/MIME encoding/decoding authenticates the integrity and author of the message and encrypts the content
Included X509 certificate management support is used to manage security at levels 2 and 3
The following login mechanisms are supported: OAuth 2.0 (XOAUTH2), GSSAPI, NTLM, APOP, CRAM-MD5, LOGIN, PLAIN, and clear-text
Servers usually require client authentication. PowerTCP supports all typical techniques, including GSSAPI and NTLM (that can be used in single-sign-on mode where the current user's credentials are used).
A username and password is required in all cases except single-sign-on.
SSL can be implicit, where a dedicated server port expects an immediate SSL negotiation upon connection establishment, or explicit, where SSL is negotiated on demand. PowerTCP supports both techniques using simple configuration properties.
S/MIME version 3.2 standards (backwards compatible to version 3.0) enforce message authentication and message privacy:
Message authentication is implemented by the sender performing a one-way hash on the message and his public key. The receiver duplicates this hash (using the sender's public key in the included X509 certificate), and a matching hash verifies the message is intact and was sent by the individual identified in the X509 certificate.
Message privacy is implemented by the sender encrypting the message using the recipients public key. Only the recipient can decrypt this message because only he has the necessary private key.
Typically, user1 will send a signed message to User2. User2 now has user1's public key. User2 can use that public key to encrypt a response to User1, and then User2 can also "sign" the encrypted message so that User1 gets his public key. From that point onward both users can send the other encrypted, signed messages.
MailMessage methods SecureSign(), SecureEncrypt() and SecureDecode() perform these functions.
X509certificate management is automatic when possible, but included sample source code (VB and C#) is useful when user interaction is required.
PowerTCP Enhances and Extends the .NET Framework
Feature
.NET Framework
PowerTCP
Simple SMTP, MailMessage MIME encoding
Complex SMTP, MailMessage MIME encoding
-
POP3, IMAP4 and MIME decoding (receiving email)
-
S/MIME encoding and decoding (authentication and privacy)
-
Ease-of-Use, Efficiency, Stability
Create HTML mail (MHTML) from HTML documents with one line of code
MailMessage class provides a nested hierarchy of MIME entities (parts) you can easily manipulate:
Properties expose header labels and enumerate multipart content
Author email of any complexity
IsMime property to control the use of MIME encoding on a per message basis.
Included MessageEditor control (with source code) provides a message viewer/editor
MailMessage.GetEncodingStream() returns a Stream that decodes when Write() is called (the MailMessage is incrementally populated with decoded content) and encodes when Read() is called (the user's buffer is filled with the next segment of the encoded MailMessage)
Suitable for advanced WinForms applications as well as single-threaded services, console and web applications
Winform samples demonstrate robust multi-threading features and Task-based Asynchronous Pattern (TAP)
.NET-centric, reusing classes from System.Net.Mail and System.Net.Mime
Class properties are used for several purposes, making the object model more concise and easier to learn: - Default (uninitialized) values will work for most applications, so research may be avoided - Configuration properties control behavior (like SSL security), so users are usually spared low-level detail programming - Configuration properties are grouped in classes that can be easily serialized for later use - Some properties are high-level shortcuts. MailMessage.Html will search MailMessage.Parts to return text from the first "text/html" part found.
Classes merge low-level detail (typically properties that can be read) with high-level methods (that use overloads to provide default parameters). This technique combines completeness with ease-of-use.
F1 help documentation is fully supported.
MessageEditor control (with source code) is provided to visualize and/or edit any MailMessage.
Reuse - Existing .NET Mail and Mime classes are reused (MailAddress, MailAddressCollection, ContentType, ContentDisposition, etc.), minimizing the product learning curve and enhancing stability. - Sample applications provide dialog boxes that can be quickly customized. - Class hierarchy is carefully designed to locate selected convenience properties and methods in base classes for re-use by derived classes.
System segmentation promotes efficiency
MailMessage (and other classes derived from Part) localize message creating, editing, and interpretation.
MailMessage.GetEncodingStream() returns a Stream that performs encoding and decoding. - Using Write(), the provided buffer is decoded and the MailMessage is incrementally populated. - Using Read(), the provided buffer is filled with the next encoded segment that can be streamed to the server. - Encoding/decoding is interleaved with socket operations, resulting in optimal performance.
Smtp, Pop, and Imap components are optimized for socket communications. Messages are transferred on demand. Worker thread efficiently sleeps while waiting for socket data.
Stability
Microsoft environment standards are used to maximum benefit: most character set encodings, IDN encoding, Base64 encoding, S/MIME encoding, SSL encryption, etc. use existing .NET classes. Components are fully managed (written in C#).
Integrates with Visual Studio 2005 onward (applications can target .NET 2.0+, including Client Profile).
20 years of email library design experience was leveraged to produce highly maintainable class definitions: - Protocol code is localized in Smtp, Pop and Imap classes. - Encoding/decoding code is localized in streaming classes that are optimized for dynamic, on-demand use. - Provided public classes are minimalist in design, providing a complete product that helps lead the developer to a good application design.
MailEditor Control displays any MailMessage
Interoperability
Gmail, Yahoo! mail, Office 365, Microsoft Exchange fully supported
Complete internationalization support for non-ASCII character sets (Kanji, Korean, Chinese, Arabic, etc.)
PowerTCP for .NET components do not currently support execution within Silverlight. If you are interested in using Dart products within your Silverlight solution, contact support@dart.com for more options.