Rebex .NET components 2012 R2: RTF to HTML converter for RTF-only Outlook MSG or winmail.dat/TNEF e-mails

  |   Lukas Pokorny

Our revamped buildsystem finally bears fruit - although it has only been 3 months since the previous release, we have been able to add new features and fix bugs at much faster pace. What's new this time?

RTF to HTML converter

Almost all e-mail messages use HTML and/or plain text for the message body. But this is not always the case for Outlook .MSG messages and even for mail messages using the infamous winmail.dat/TNEF format. Both of these often use RTF instead of HTML, causing interoperability issues with third-party clients. Fortunately, Rebex Secure Mail users no longer have to suffer from this - we have added a RTF-to-HTML converter that converts the body of these messages into HTML, which means they can be then processed just like an ordinary e-mail!

Client certificate authentication in SFTP & SSH

Although SFTP/SSH usually use password-based or public-key-based authentication, some servers support X509 client certificate authentication as well. Unfortunately, not all servers support this, and those which do use a variety of different protocol extensions to achieve it. In this release, we have added client certificate authentication compatible with VanDyke VShell server. If it doesn't work with your server, please let us know.

High-level GZIP API

Although it was already possible to read and write GZIP files using existing Rebex.IO.Compression.Streams classes, they were not as straightforward to use as we would like. As an easy-to-use alternative, we added Rebex.IO.Compression.Gzip class with Compress and Decompress methods.

Complete list of changes:

  • All: Added FileSet.Flatten option (makes it possible to ignore source directory structure and copy all files into single target directory).
  • All: Enhanced error reporting of file-path-based methods.
  • All: Added LocalItem and LocalItemCollection classes (used by FileSet.GetLocalItems method).
  • FTP/SSL: Fixed FtpProxy serialization where Encoding was omitted.
  • FTP: Added support for "double-login" FTP proxy servers.
  • FTP: Added Ftp.GetItems(string, ...) methods.
  • FTP: Link resolving code enhanced to better handle FTP servers on Un *x-like platforms.
  • FTP: Added support for additional MLSD attributes (creation time, Unix mode/owner/group and Windows file attributes).
  • FTP: Added support for OPTS UTF8 on RaidenFTPD server.
  • FTP: Added Download/Upload(string, string) method overload.
  • FTP: Added support for common names with ' *' wildcard to CertificateChain.Validate.
  • FTP: Added support for instances of MS FTP 7.5 which request hostname.
  • FTP: MLST is now used in Ftp.GetFileDateTime by default.
  • FTP: Added workaround to SetFileDateTime that checks whether the correct time was set and fixes it if it was not.
  • FTP: Compatibility enhancements in multifile methods.
  • IMAP: Better error message for implicit SSL IMAP server sending plain packets.
  • IMAP: Fixed a bug in Imap that occasionally caused an error when fetching message bodies.
  • MIME: Added RTF to HTML converter which is used to produce an HTML body for RTF-only Outlook MSG or winmail.dat/TNEF e-mails.
  • MIME: AlternateView.SetContentFromFile now removes the byte-order-mark from the body text for text/ * media types.
  • MIME: Added workaround for TNEF attachments which use full instead of name only.
  • MIME: MailSignatureStatus.SenderSignatureMissing value fixed (was identical to MissingSender by mistake).
  • MIME: Added MimeMessage.Priority property.
  • MSG: Invalid characters in attachmnent file names of Outlook MSG messages are now replaced with underscore character.
  • MSG: Added support for '+' character in media type headers.
  • MSG: Support for 'REPORT.IPM.Note.IPNRN' added to Outlook MSG parser.
  • MSG: X-Outlook- * headers with non-ASCII characters produced by LoadMsgProperties are now properly MIME-encoded.
  • MSG: Added workaround for MSG files falsely claiming to use UTF-16, which used to produce unreadable X-Outlook- * headers with LoadMsgProperties option.
  • MSG: Enhanced handling of invalid media types in Outlook MSG messages.
  • MSG: Fixed a bug in MSG parser that caused it to fail with signed and/or encrypted messages if MimeOptions.OnlyParseHeaders option was set.
  • Networking: UseLargeBuffers option added into IFtpSettings.
  • Security: Fixed local/UTC time comparison in Certificate.IsTimeValid.
  • Security: Fixed a bug in TransformFinalBlock method of Rebex.Security.Cryptography ciphers that caused interoperability issues with CryptoStream.
  • Security: Added implicit conversion between Certificate object and X509Certificate/X509Certificate2 objects.
  • Security: Enhanced compatibility with Mono on non-Windows platforms
  • Certificate validation now works!
  • Security: Support for saving .PFX/.P12 files added to Certificate.Save method.
  • Security: Added new overloads of Certificate.Associate that make it possible to permanently bind the private key to the certificate.
  • Security: Added Certificate.FriendlyName property.
  • Security: Fixed Certificate.SignHash method which used failed on .NET 2.0 when an associated key was used for MD5SHA1 signature generation.
  • Security: Fixed MD5Managed.HashSize property which used to return 0.
  • Security: Certificate.HasPrivateKey code in .NET CF version changed to behave identically to .NET version.
  • SFTP: Added support for POSIX rename ('posix-rename@openssh.com' extension).
  • SFTP: Fixed a bug in Sftp.GetFiles which caused an ArgumentOutOfRangeException on some servers.
  • SFTP: SftpItem uses UTC time for range checks (previously there were problems with times close to 1970-01-01).
  • SFTP: Added Download/Upload(string, string) method overload.
  • SFTP: Added Sftp.GetItems(string, ...) methods.
  • SMTP: Fixed a bug in static Smtp.Send method where a connection was established even though it was not needed.
  • SMTP: SmtpTransferProgressEventArgs.TotalBytes property added.
  • SMTP: Smtp.ResolveDomainMX method fixed to handle CNAME records as well.
  • SSH Core: Ssh.AuthenticationRequest event added (supports advanced keyboard-interactive variants).
  • SSH Core: Added support for hmac-sha1-96 and hmac-md5-96 MAC algorithms.
  • SSH Shell: Shell.ReadAll() modified to make it possible to return the welcome message in SshShell.PromptMode as well (just like in Rebex Telnet).
  • SSH: Added SshPrivateKey(AsymmetricAlgorithm) constructor that makes it possible to initialize it from RSACryptoServiceProvider/DSACryptoServiceProvider (useful for SmartCard-based keys).
  • SSH: Fixed wrong handling of large remote SSH channel window sizes (used by mod _sftp server).
  • SSH: Client certificate authentication added (compatible with VanDyke VShell server).
  • SSH: ZLIB support announced even when not preferred (without that, we were unable to connect to servers that refuse uncompressed sessions).
  • SSH: Fixed a bug that causes a misleading error to be reported on immediately-closed connections.
  • SSH: Added workaround for mod _sftp/0.9.7 which occasionally produces broken DSA signatures.
  • SSL: Fixed a misleading error message which was reported when certificate revocation status could not be checked.
  • SSL: When ProtocolVersion error occurs, data received prior to it is logged.
  • Terminal: Better error recovery on invalid escape sequences.
  • Terminal: SuppressAltAsMenuKey and SuppressShortcutKeys properties added to the TerminalControl to specify how to handle input keystrokes.
  • Terminal: Added support for 'window title' and 'icon name' actions to ActionRequested events.
  • Terminal: Better Alt-Gr key handling.
  • Terminal: Added workaround for Clipboard errors.
  • Terminal: Fixed TerminalControl.SetScreenSize method (did not work with AutoAdjustTerminalSize set to false).
  • Time: Added a workaround for Windows CE bug that caused a wrong time zone to be used when setting a time with different daylight saving offset.
  • ZIP: High-level GZIP API added (Rebex.IO.Compression.Gzip class).