Build 4060: Outlook .MSG format support in Rebex Mail, bandwidth throttling in Rebex SFTP

Outlook .MSG format support in Rebex Mail

Writing this from scratch took a lot of time, but it was definitely worth it. With the new release of Rebex Mail and Rebex Secure Mail, the MailMessage class can load and save Outlook .MSG format files! You might not even have to change your application to add support for loading .MSG files because they are detected and parsed automatically.

Bandwidth throttling in SFTP

Rebex FTP and FTP/SSL components already got bandwidth throttling few years ago. Now it's available in Rebex SFTP as well and it's just as easy to use - just check out Sftp's new MaxUploadSpeed and MaxDownloadSpeed properties and the new WinFormClient sample.

BytesTotal and ProgressPercentage properties in transfer progress events

Implementing a file transfer progress bar is now even easier than before due to new BytesTotal and ProgressPercentage properties which were added to TransferProgress event arguments in both Rebex FTP/SSL and Rebex SFTP.

Complete list of changes:

  • FTP: BytesTotal and ProgressPercentage properties added to Ftp.TransferProgress event arguments.
  • FTP: Group, Owner and Permissions properties added to FtpItem class.
  • FTP: Added support for Transnet FTP Gateway's list format.
  • FTP: Added a new overload for the Login method that accepts account in addition to username and password.
  • FTP: Added FtpOptions.ForceListHiddenFiles option to force using "LIST -la" instead of "LIST" command to retrieve file and directory listings.
  • FTP: Fixed a bug that caused a list parser to failed for symlinks with missing target path.
  • FTP: Added support for Tandem Guardian FTP server list format.
  • FTP: FtpItemComparer class added to ease sorting of FtpList items.
  • FTP: Enabling FtpOptions.EnableControlConnectionFlushing option doesn't cause a noticable slowdown now.
  • FTP: Ftp.PutFiles method (in ThrowExceptionOnLinks mode) correctly detects the links in Windows 7 which were not detected previously.
  • FTP: Added a workaround for servers that advertise MLST support but report a "Can't check for file existence" error later.
  • FTP: Ftp.IsAuthenticated property added to make it easily possible to skip calling Ftp.Login method for users already authenticated using a certificate.
  • FTP: Fixed a bug in ZLIB decompression routines.
  • FTP: Fixed improper TLS/SSL session reusing. FtpOptions.FtpReuseControlConnectionSession option added to make it possible to re-use the control connection session for subsequent data connections as well.
  • FTP: Support for IBM AS/400 FTP listing format added.
  • FTP: Added workaround for FTP servers which don't properly end the ZLIB stream when MODE Z is used.

  • SFTP: Bandwidth throttling support through Sftp object's MaxUploadSpeed/MaxDownloadSpeed properties.

  • SFTP: BytesTotal and ProgressPercentage properties added to Sftp.TransferProgress event arguments.
  • SFTP: SetFileDateTime in SFTP v4 is now compatible with WS _FTP.
  • SFTP: Sftp object's AbortTransfer method now properly cancels operations that are just about to start as well.
  • SFTP: Added SftpItemComparer class to ease sorting of SftpItemCollection items.
  • SFTP: Added workarounds to Sftp.GetStream method SFTP servers that don't support the Append mode.
  • SFTP: Added workarounds for several SFTP servers where SSH _FXP _STAT and SSH _FXP _REALPATH commands (used by many Rebex SFTP methods) don't always work (for aliased directories, for example).
  • SFTP: Sftp.PutFiles method (in ThrowExceptionOnLinks mode) correctly detects the links in Windows 7 which were not detected previously.
  • SFTP: Added a workaround for SFTP server that sent duplicate filenames in their listings.

  • SCP: GetFiles and PutFiles methods added to Scp object to make it possible to transfer multiple files or a whole directory tree in one call.

  • IMAP: ImapMessageCollection.Remove method added.

  • IMAP: ImapSearchParameter.Arrived now accepts DateTime.MinValue as "since" argument.
  • IMAP: Added ImapMessageInfoComparer and ImapMessageCollection.Sort method to ease sorting of message info items.
  • IMAP: The default value of Imap.Encoding is now selected according to the current locale.
  • IMAP: ContentId property added to ImapMessagePart object.

  • MIME: Load and save support for MS Outlook .MSG format added to MailMessage class.

  • MIME: Fixed a bug that caused a failure when trying to verify a signature of a MailMessage with Sender header present.
  • MIME: Messages with signature broken by WatchGuard Firebox are loaded fine now (although the signature is not usable any more).
  • MIME: Automated PKCS #7 S/MIME blob detection for unknown "smime-type" values in Content-Type header.
  • MIME: Added a workaround for Content-type arguments with missing quotes.
  • MIME: Fixed a bug in mail message tree reader that sometimes caused bodies to be treated as attachments.
  • MIME: Fixed an issue in MimeParameterList.Encode method that caused a bad format to be encoded when used separately.
  • MIME: Improved exception messages for some header parsing errors.

  • POP3: Added Pop3MessageInfoComparer class and Pop3MessageCollection.Sort method to ease sorting of message info items.

  • POP3: Fixed bug in Pop3.Abort method that caused its call to be ignored during very fast transfers.
  • POP3: Added Pop3Options.IgnoreInvalidEndings option to make it possible to ignore invalid endings in message data sent by some broken POP3 servers.
  • POP3: Added workaround for Gmail's POP3 service which makes retrieved messages invisible next time.
  • POP3: Added Pop3.GetMessageSequenceNumber method which converts a unique ID to sequence number.

  • ZIP: .NET Compact Framework edition of Rebex ZIP now available.

  • ZIP: GzipCompressionStream and GzipDecompressionStream objects added.
  • ZIP: Added an option (ZipOptions.SkipItemsWhichCannotExtract) to skip items we can't extract in ZipArchive.Extract method.
  • ZIP: Fixed a bug in ZLIB decompression routines.
  • ZIP: Added ZipArchive.ForceManagedAes flag as a workaround to .NET's leaking AesCryptoServiceProvider.
  • ZIP: ZipArchive.Add method (in ThrowExceptionOnLinks mode) correctly detects the links in Windows 7 which were not detected previously.
  • ZIP: Zip64 is no longer used for data added from Stream by default due to compatibility issues (with Windows XP, for example). ZipArchive.Options.Zip64Mode property added to make the behavior configurable.

  • Terminal: During Select Character Set control sequence, character set is immediately invoked into GL.

  • Terminal: Added support for Pick terminals.
  • Terminal: Added ActionRequested event to TerminalControl and VirtualTerminal objects to make it possible to handle action requests from the server.
  • Terminal: CursorText and CursorMouse properties added to TerminalControl object.

  • SSH Core: AuthenticationRequest event added to make it possible to deal with all kinds of "keyboard-interactive" authentication prompts.

  • SSH Core: Fixed a possible race condition that might have occured when using the same SshSession intance from multiple threads.
  • SSH Core: Enhanced automated "keyboard-interactive" authentication to support more variants of password prompt.
  • SSH Core: Fixed a bug in ZLIB decompression routines.
  • SSH Core: SshSession.Encoding property added.
  • SSH Core: Added SshOptions.WaitForServerWelcomeMessage option.

  • ProxySocket: Added a new ILogWriter implementation that logs all messages to .NET's System.Diagnostics.Trace.

  • Security: Added a new overload of SshPrivateKey.Save to make it possible to save keys in SSLEay/OpenSSH format (in addition to PuTTY .ppk and PKCS #8 formats).

  • Security: Added CertificateChain.Save method to save the chain in .p7b format.
  • Security: Fixed a bug in DistinguishedName object that caused the elementes of string representation of DNs to be reversed.
  • Security: Added CryptoHelper.ForceManagedAes flag as a workaround to .NET's leaking AesCryptoServiceProvider.