PowerTCP Mail for .NET

from $349.00
Available Platforms


The following is a list of public releases for all components shipped with PowerTCP Mail for .NET (Latest Release 2021-3-22)


PowerTCP Mail for .NET

     Current Version:   Released: 2021-03-22


  • OAuth 2.0 (XOAUTH) compatibility for Office 365 POP and SMTP servers.   Released: 2020-12-16


Product fixes in this release:

  • Fixed a minor compatibility issue so that Dart.Mail.Standard.dll can be used with .NET 5.0.   Released: 2020-04-07


  • Update: Implemented comprehensive OAuth 2.0 form in applicable Example Projects. 
  • Compatibility improvement: added support to decode single digit day of month on date time values store in content-disposition. (TFS 1079)
  • Compatibility improvement: added an additional SecureEncrypt overload to MailMessage to allow the SubjectIdentifierType to be specified which can improve SMIME compatibility with mail clients. For example using AES encryption with Mozilla Thunderbird requires that SubjectIdentifierType.SubjectIdentifierKey to be used. (TFS 1089)
  • Resolved: Base64 encoded attachments failing to decode when the mail line length is set to a number not divisible by four (4). (TFS 1096)
  • Resolved: instance in which quoted filenames could fail to decode correctly. (TFS 1100)
  • Resolved: names specified in content-type headers failing to decode if they contained a semi-colon, followed by white space. (TFS 1101)   Released: 2019-06-17


  • Fixed an issue in the .NET Standard assembly that resulted in string resources not being available when certain exceptions occurred. (TFS 1075)
  • Fixed an issue that resulted in .NET Standard assemblies being unusable in newer .NET Core preview releases.
  • Fixed an issue where embedded base64 encoded MIME resources would cause a missing reference exception. (TFS 1073)
  • Fixed an issue where NTLM/GSSAPI Single Sign On functionality would not work if Authentication was set to Auto. (TFS 1077)   Released: 2018-09-24


  • Refactored header parsing resulting in better handling of unorthodox headers and header parameters.
  • Added a property for setting the Authorization Identity when using Imap's PLAIN authentication mechanism.
Product fixes in this release:
  • Resolved various parsing issues related to RFC822 message parts and RFC822 message part attachments. (TFS 1069, TFS 1070, TFS 1071)   Released: 2018-09-24


  • Various improvements made in handling malformed mail messages and message headers.   Released: 2018-08-02


  • An issue where RFC822 parts may not be decoded correctly when their encoding type is Quoted-Printable has been fixed. (1049)   Released: 2018-04-04


  • Added support for .NET Standard 2.0 and .NET Core 2.0
  • New .NET Core 2.0 sample projects, referencing the Dart.Mail.Standard dll
  • Updated trial license operation for use on .NET Standard-compatible platforms
  • Details regarding trial operation for Dart.Mail.Standard.dll can be found in the Licensing and Trial Operation topic in the included help documentation
Product fixes in this release:
  • Resolved an issue where some attachment filenames were not properly decoded. (1025)
  • Resolved an issue where the component would use the systems native end of line sequence instead of CRLF. (1026)
  • Resolved an issue where in line links to web resources in HTML emails could cause an exception be thrown if the URL began with capital letters, ex: HTTP instead of http. (1035)   Released: 2017-03-08


  • Visual Studio 2017 compatibility.   Released: 2017-02-01


Product fixes in this release:

  • An issue where spaces were incorrectly removed when only a portion of header text was Q-encoded was resolved. (958)
  • An issue where attachments names were not parsed out correctly when the attachment part headers contained both a name and filename parameter has been resolved. (964)
  • Some servers do not support the reciept of the EHLO command after authentication. EHLO will no longer be sent after authentication has occurred. (983)
  • An issue where FETCH responses containing parentheses within quoted strings were not being parsed correctly has been resolved and the responses will now be correctly parsed. (984)
  • An issue where IMAP Mailbox name encodings could be persisted between separate IMAP sessions has been resolved. Now all encodings revert to their default state when a new connection is attempted. (989)
  • An issue where LIST responses were not correctly parsed if NIL was in the hierarchy separator place was resolved. (990)   Released: 2016-07-19


Product fixes in this release:

  • An issue that could result in a null reference exception being thrown while retrieving email headers from a POP server was resolved. (915)   Released: 2016-06-01


Product fixes in this release:

  • Mailbox hierarchy delimiters that are an escaped quoted string character (ex: "\\") will now be decoded and parsed correctly. (901)   Released: 2016-04-15


  • Improved decoding of email messages with nonconformant MIME boundaries.
  • Improved samples to display HTML parts with charset headers that are not parsed correctly by the WebBrowser control.   Released: 2016-04-07


  • XOAUTH2 authentication support for Imap, Smtp, and Pop has been added.
  • MailMessage.ReplyInline and MailMessage.ReplyAllInline methods have been added which will prepend a reply to the original message text.
  • Imap.GetAllMailboxes has been added so that a flat list of mailboxes can be retrieved.
  • Imap.Select has been added to provide support for selecting mailboxes using an absolute path.
  • Support for UTF8=Accept and UTF8=Only server advertised 8-bit capabilities. Its use can be controlled with the ImapSession.AutoUtf8 property.
  • Support for RFC3030 (Chunking and Binary mime) and RFC6152 (8-bit Mime) for Smtp has been added.
  • Support for Xtext encoding as specified in RFC 3461 has been added.
  • Developer Note:
    In order to provide more concise groupings for server settings the Smtp and Imap controls now use SmtpSession and ImapSession to store settings instead of the previously shared MailSession.


Product fixes in this release:

  • If PunyCode decoding fails for any reason the original encoded header will be preserved. (661)
  • Instances where some multi-line QP encoded subject headers would fail to decode correctly have been addressed. (666)
  • An issue where some SMIME messages with a content-type of application/pkcs7-mime would fail to decode has been corrected. (679)
  • When an email message is added as an attachment the content-type is now correctly set to application/octet-stream. (711)
  • In issue where MailMessage.ReplyAll could incorrectly populate recipient data has been addressed. (717)
  • An error in handling extended parameters as described in RFC2231 was addressed. (826)   Released: 2015-04-01


  • The Bcc header will now be included when a message is saved to disk and when loaded from disk.
  • Functional Change:
    In order to make email message data available if a signature fails validation, MailMessage.SecureDecode() no longer automatically validates SMIME signatures. Signatures can now be validated using the returned SignerInfoCollection, ex:


System.Security.Cryptography.Pkcs.SignerInfoCollection signatories = mailMessage1.SecureDecode();
foreach (System.Security.Cryptography.Pkcs.SignerInfo signator in signatories)


Product fixes in this release:

  • Parts with a Content-Disposition of 'inline' but a Content-Type of 'multipart' will now be parsed as a Multipart, not a Resource. (620)
  • MIME emails with UUEncoded attachments will now be decoded regardless of the presence or absence of the begin and end affixes, and encoding now includes the begin and end affixes. (622)
  • Encoded word email addresses containing ";" will now be decoded correctly. (633)
  • Email decoding will now succeed when the Bcc field is populated with an invalid email address. (634)
  • When using Smtp, if Auto authentication is chosen and no user name and password are provided then authentication will default to 'None'. (637)
  • Emails with RFC822 attachments that contain an attachment will no longer throw an IOException when Dispose is called. (638)   Released: 2014-09-29


Product fixes in this release:

  • Calling MailMessage.Clear() will result in the message being initialized to a MIME message. (499)
  • If there is a content disposition header present in a mail part then a resource or attachment part will always be added regardless of content type. (511)
  • UUencoded attachments will now be encoded with a grave character instead of a space. (519)
  • Mail message header values that use quoted printable encoding now decode correctly. (545, 549)   Released: 2014-04-11


  • The MailMessage.IsMime property has been added to indicate and control the use of Mime encoding for the current message. Messages that are not Mime encoded will now retain their original encoding.
  • Support for decoding headers encoded with the extensions described in RFC 2231 "Parameter value and encoded word extensions" has been added.
  • The FAST and FULL fetch macros defined in RFC3501 have been added to the ImapMessageInfo enumeration.
  • SmtpResults.Recipients has been changed from a list of EmailAddress objects to list of Recipient objects in order to include a SmtpResponse property that will contain the response of the sending server for each successful send.

Product fixes in this release:

  • When calling MailMessage.ForwardAsAttachment all temporary files will now be created in directory specified by Attachment.Directory instead of the system temporary directory. (359)
  • Malformed parts with no content-encoding would result in a null part being added to the MailMessage object, these parts will now add a text/plain part. (395)
  • Imap flags for messages residing on a Gmail server now update correctly when messages are fetched. (396)
  • An issue where unsolicted server responses could interrupt email message processing has been addressed. (397)
  • Email parts without a specified content type containing are created as text/plain parts per RFC 2046. (401)
  • Subject and Comment fields containing the semicolon (;) character will now be parsed correctly. (419)
  • MailBox.Add now returns void. After the message has been added a NOOP can be performed to update the mailbox state. (434)
  • Sender and ReplyTo are now parsed out if present when fetching an email's envelope with IMAP. (450)
  • Imap.Seen will default to true when fetching a message with ImapInfo.Message or ImapInfo.Text and not specifying peek. Previously messages flagged as seen on the server would be flagged as unseen to the component. (454)   Released: 2013-12-17


  • Added the Attachment.Directory static property which indicates where temporary files will be stored for emails after decoding.

Product fixes in this release:

  • Trial notifications have been revamped to be more friendly with service based projects. (TFS294)
  • Dispose was added to message and protocol objects so that temporary files will be deleted when dispose is called for those objects. Please see the documentation for details. (TFS329)   Released: 2013-10-02


Product fixes in this release:

  • Improved message cloning when malformed file attachment headers are present. (TFS277)
  • Resolved an issue with Part.EncodingMap that could cause a race condition in multi-threaded applications. (TFS292)
  • Improved the message object representation of mail messages that are attachments when only the structure of the parent email is retrieved with Imap. (TFS299a)
  • Improved support for the legacy RFC822 attachment format. (TFS299b)
  • Improved parsing of Imap email structure to provide access to parts of an email that is attached to the parent email. (TFS300a)
  • Resolved an issue with retrieving the same attachment part repeatedly. (TFS300b)
  • Resolved an issue where filtering for multipart message parts would return no parts. (TFS301)
  • Resolved a segmentation issue that could occur while decoding quoted printable messages. (TFS313)   Released: 2013-08-02


  • Addition of the MessagePart object provides support for in place decoding of message parts of content-type message/rfc822 which allows for any attachments or resources of that part to be promoted up to their respective top-level collections.
  • PowerTCP Mail for .NET is operational with Mono 2.10.9 or greater with the exception of NTLM and GSSAPI authentication.

Product fixes in this release:

  • If a charset is not present in the message or part headers but is detected in the HTML body, the charset in the HTML body will be used to decode the content of that part. (TFS 214)
  • Support for split-line word-encoding added. (TFS 217)
  • Mail messages received as an attachment to another mail message will now be decoded in place. (TFS 255)
  • Allow decoding to succeed if there is a missing terminating "--" in the closing boundary demarcation of a multipart MIME encoded mail message. (TFS 265)
  • Accommodated for System.Net.Mime.ContentDisposition producing incorrectly encoded Date/Time headers. (TFS 268)
  • Resolved ImapMessage.Info not always updating correctly when returning to a previously selected mailbox. (TFS 269)   Released: 2013-04-12


  • Dart Communications is pleased to announce the release of PowerTCP Mail for .NET 4.0.

Some of the exciting new features include:

  • Model-View-Controller design uses fewer resources, is more flexible, and produces code that is easier to maintain
  • Improved use of .NET Features including generics and IPv6
  • Robust IMAPv4. POP3 and SMTP support
  • Improved thread-safe design
  • SSL support for secure communications
  • Added NTLM and GSSAPI, supporting single sign-on
  • Improved support for internationalized e-mail addresses and domains when in .NET 4.0+
  • Support for DNS resolution of internationalized domain names
  • Simplified MailMessage object, making it easier to use
  • Support for S/MIME encrypted and signed e-mails
  • Support for Windows applications, services and ASP.NET web applications
  • Many sample projects for C#, VB.NET, including ASP.NET
  • Comprehensive MS Help 2.0 and Help Viewer 1.0 integrated documentation
  • Stand-alone and online documentation also provided
  • NET Framework Client Profile compatible
  • 64-bit OS support


PowerTCP 4.0 Mail for .NET Upgrade Guide >


No more Async methods
Previous versions of PowerTCP and PowerSNMP implemented an event-driven model for asynchronous use. In addition to a synchronous method, each operation had an asynchronous "BeginXXX" method and corresponding "EndXXX" event. For example, to receive data asynchronously using the Tcp component, the developer called BeginReceive and waited for the EndReceive event to fire with data. In the meantime, other code was free to execute.

In the new design, asynchronous methods are no longer needed. Instead, the developer uses one or more synchronous methods (for example, "Receive") within function, and then passes a delegate referring to this function to the component's Start method. The Start method then executes the function a worker thread.

Marshaling data back to the UI thread
It is sometimes necessary to pass information from a worker thread to an element on the UI thread. The new design includes Marshal functions to simplify this operation. Each Marshal overload corresponds to an event handler that executes on the UI thread and provides access to data passed by the Marshal method.

No more "pseudo-blocking"
Methods in the new design are now true-blocking calls. In previous versions, methods were "pseudo-blocking," meaning that UI events could be processed while the call blocked. With the new design, the UI thread is blocked if a method is called from within the UI thread. The Start method should therefore be used in UI environments so normal UI processing is preserved.

Use of IPEndPoints
Many methods in the new design include overloads that take IPEndPoint parameters to facilitate IPv6 use. A new IPEndPoint derived class provides several overloads for easy IPEndPoint creation, including automatic hostname resolution.   Released: 2011-01-05


Product fixes in this release:

  • A login error introduced in version was addressed. "An address incompatible with the requested protocol was used" error would occur under certain conditions if the mail server supported IPv6. (5374)   Released: 2010-10-21


  • PowerTCP Mail for .NET has been updated with VS 2010 integration.
  • PowerTCP Mail for .NET now supports .NET Framework 4 Client Profile.

Product fixes in this release:

  • Fixed Smtp.Authentication failures when the server supported options other than what the property was set to. (5133)
  • Fixed index out of range exception when examining Attachments collection for messages with nested attachments. (5146)
  • Fixed SMTP authentication problem for servers that would send more options after explicitly negotiating a secure connection. (5194)
  • Fixed Stack overflow exception that would occur when constructing MessageStreams from some file streams. (5224)
  • MessageStream can now decode messages using CP1252 encoding type. (5251, 5318)
  • Fixed ArgumentOutOfRange exception when referencing some attachments in a MessageStream. (5333)
  • Provide better error message for invalid "Search 0" response provided by SmarterMail v7. (5343) Released: 2009-06-29


  • A UsePipelining property has been added to the Smtp component, permitting users to choose whether or not to use PIPELINING when the server supports it.
  • Added a MimeAttachmentStream.ContentId property.

Product fixes in this release:

  • Fixed problems with some Smtp servers when PIPELINING was used with Explicit security. (4069)
  • The MessageStream property now has a default value (MessagePriority.Normal), instead of being null. (4723)
  • Fixed an issue with decoding headers that span multiple lines. (4724)
  • When Imap Gets are performed with the UID option, ImapMessage.Uid is now populated. (4726)
  • An encoding exception that would only appear in Japanese Operating Systems has been fixed. (4758)
  • The PopLoginMethod.Apop option now works correctly. (4762)
  • The IsMime property now works correctly. (4774)
  • The Logout method will always timeout now if no response is received from the server. (4781)
  • Under certain circumstances the Pop component Timeout would incorrectly be twice the value specified. (4864)
  • The NotSeen Imap Search Criterion now works. (4883)
  • The Content-Type and Date headers are no longer cleared when a message is encrypted or signed for S/MIME. (4887)
  • Setting the Content-Type on the message level now correctly affects the appropriate parts of the message. (4889)
  • The Imap component now uses the manually set Security value for Implicitly secure connections, instead of always using TLS. (4894)
  • Certificates for wildcard domains such as *.dart.com are now supported. (4917)
  • Connecting asynchronously with Imap after trying to connect asynchronously to a non-existent server no longer causes an error. (4935)
  • A BeginLogin overload was defaulting to the Implicit security port instead of 110. (4937)
  • A problem with Imap and Implicit security was addressed. (4938)
  • The Content-Type of a part can now be set after the part has been added to a message. (4942)
  • Fixed a stack overflow exception caused by certain non-standard messages. (4973)
  • Fixed an issue with Smtp using Explicit security and authentication. (4977)
  • Fixed a problem with fetching some message BODYSTRUCTUREs with Imap. (4989)
  • Corrected condition in which messages could have two FROM headers. (5084)
  • Fixed a Quoted-Printable problem when multiple Smtp components were used on multi-processor machines. (5091)   Released: 2008-04-08


  • If a message is sent with no From header or Smtp.MailFrom, the component looks for a Sender header to use as the From address.
  • There is a new DeliveryStatusNotification.Enabled property which can be set to false to prevent DSN extensions, even when the server supports them.

Product fixes in this release:

  • An Imap compatibility problem with Domino server has been addressed. (4506)
  • The MessageStream no longer inserts a line into the headers of a 0 part message. (4573, 4651)
  • S/MIME is now fully functional on 64 bit machines. (4579)
  • A message truncation problem as been addressed. (4637)
  • Friendly names that include '@' are now parsed correctly. (4650)
  • The MessageStream now correctly decodes long filenames of messages created by Thunderbird. (4688) Released: 2008-01-30


Product fixes in this release:

  • Addressed problem with Smtp component where initialization would fail if default DNS servers were not found on the system.