PowerTCP Mail for .NET - More
Manage email using standards-based protocols
SMTP, POP3, IMAP4 components interact with servers
- Integrates .NET features, including generics, IPv6, dual-stack sockets and X509 certificates
- Secure: Link-level encryption (SSL 2.0, SSL 3.0, PCT, TLS 1.0, 1.1, 1.2) is controlled using simple session properties
- Progress events report message upload/download activity
- Log events report data for debugging and display purposes
- Send any custom command using the exposed TCP connection
SMTP is for sending email
- Secure
- Authentication support: CRAM-MD5, GSSAPI and NTLM (with single-sign-on), LOGIN, PLAIN
- Encrypt and/or sign outbound S/MIME messages - 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
POP3 is for downloading email
- Secure
- Authentication support: CRAM-MD5, GSSAPI and NTLM (with single-sign-on), LOGIN, PLAIN, clear-text, APOP
- Decrypt and/or verify signed S/MIME messages - 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
- Secure
- Authentication support: CRAM-MD5, GSSAPI and NTLM (with single-sign-on), LOGIN, PLAIN, clear-text
- Decrypt and/or verify signed S/MIME messages
- Rich and capable object model
- 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
Level 1
- 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.
Level 2
- Secure Socket Layer (SSL) ensures link-level privacy.
- 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.
- SSL 2.0, SSL 3.0, PCT, TLS 1.0, 1.1, 1.2 is supported.
Level 3
- 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.
X509 certificate management is automatic when possible, but included sample source code (VB and C#) is useful when user interaction is required.
Why Buy PowerTCP Mail for .NET?
Feature | .NET Framework | PowerTCP |
---|---|---|
Simple SMTP, MailMessage MIME encoding (sending email) | ||
Directly control email encoding and sending | ||
Supports explicitly secure (STARTTLS) SMTP connections | ||
Complex SMTP, MailMessage MIME encoding | - | |
Supports implicitly secure SMTP connections (port 465) | - | |
Submit email to email relays, intermediate servers, or destination domain server | - | |
POP3, IMAP4 and MIME decoding (receiving email) | - | |
S/MIME encoding and decoding (privacy and authentication) | - | |
Provides progress for sending and receiving email | - | |
"On-the-fly" streaming performs fast encoding and decoding on demand, with no intermediate files | - | |
MailMessage class supports authoring, editing, and manipulation of complex MIME entity structures | - | |
MailEditor control visually displays any MailMessage for interactive viewing. | - |
"PowerTCP Mail for .NET version 4 is our 5th-generation e-mail product, and is a complete solution for any e-mail system. I don't think you'll find a better email-processing product anywhere."
-- Michael Baldwin, President
Ease-of-Use, Efficiency, Stability
Ease-of-Use is an attribute of class design
- 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.