using Rebex.Net;

Welcome to using Rebex.Net; Sign in | Join | Help
in Search

Using Rebex.Net

News and announcements about Rebex.NET components

  • Build 3878: ISocket, SSH Tunneling, FTP/SSL and SFTP autodetection

    FTP/SSL and SFTP server autodetection

    It's easy to confuse FTP/SSL and SFTP servers - both are often called Secure FTP. We've added protocol auto detection, so when you try to connect to FTP/SSL with SFTP component or vice versa you'll be instructed to use the right component.

    ISocket interface and SSH tunneling

    New transparency layer has been added to all communications components. SSH connection now can act as just another proxy server. It allows connecting running IMAP over secured SSH channel, or even such binary magic as running plain, old and unsecure FTP over encrypted SSH connection.

    Complete list of changes

    • FTP: Finished property added to FtpTranferProgressEventArgs class.
    • FTP: New variants of GetDownloadStream and GetUploadStream added.
    • FTP: New tutorial for file transfer resume functionality.
    • FTP: Added detection for SFTP and SSH servers that are often mistaken forh SFTP to produce better exception messages. FTP servers in wrong modes are also detected.
    • FTP: Added support for unusual way of data channel SSL initialization used by XFB Gateway FTP Server.
    • FTP: Fixed a bug that caused the DoNotDetectFeatures option to fail.
    • SFTP: Enhanced initial folder detection to be compatible with more servers.
    • SFTP: Added detection for FTP and SSL servers that are often mistaken with SFTP to produce better exception messages.
    • SFTP: Fixed incorrect behavior with paths starting with '~' character.
    • SFTP: Fixed a problem that caused SftpException.Status property to have a incorrect value in some cases.
    • SSH: Fixed an internal static method that was not thread safe.
    • SSH: PuTTY keys with no password are now supported as well (previously, only PuTTY keys with passwords worked).
    • SSH: Added SSH tunneling capabilities.
    • SMTP/IMAP/POP3/FTP/SFTP: Added hostname validity checking to Connect method.
    • SMTP: Added several missing BeginSend methods.
    • SMTP: Added SmtpOptions.AllowNullSender option to make it possible to send a message with null envelope sender.
    • IMAP: Added OR operator to search options.
    • POP3: Added workaround for GoDaddy and Windows POP3 servers that announce APOP authentication support but don't actually support it.
    • MIME: Fixed a bug in MailMessage class that caused an attachment to be parsed as texy body if no text body was present.
    • MIME: Invalid character removal routing now works for big5 and shift_jis encodings as well.
    • MIME: Added automated detection of Unicode body parts with missing header encoding info.
    • MIME: Added workaround for quote-printable headers with an invalid linefeed character in the middle.
    • MIME: Added a workaround to make it possible to parse S/MIME messages with missing smime-type header.
    • MIME: New tutorial for creating HTML e-mail with embedded pictures.
    • SecureSocket: Fixed a bug that caused data loss when a TLS/SSL connection was closed in a certain way.
    • ProxySocket: New ISocket interface to make it possible to easily implement custom transport layers.
    • ProxySocket: Fixed an unhandled exception that occured during a failed connection to a proxy specified by an IP address
  • HOWTO: Send mail on behalf of another user

    Question

    Many mail agents including Outlook support sending email from one user on behalf of another one. When you reply to such message, the response is sent to the user on whose behalf the message it was sent. One of the usage scenarios is a support group where emails are sent by each member on behalf of the whole group. A reply to any such e-mail is therefore sent to the group.

    Microsoft Outlook displays the sender of such email as "alice@example.com of behalf on bob@example.com".

    Can this be achieved with Rebex Mail for .NET?

    Answer

    Yes, this is easily possible using the MailMessage class – just you use the code from this tutorial and add the following line:

                    (C#)

                    message.Sender = "alice@example.com";

                    (VB.NET)

                    message.Sender = new MailAddress("alice@example.com")

    The resulting e-mail from field will appear as "alice@example.com of behalf on bob@example.com"

    Also worth noting is that the From property (and field) can contain multiple e-mail originators, while the Sender property (and field) can only contain either one address or none. Also, when the From is set to multiple originators, the Sender should be set as well. For detailed information about From, Sender and also Reply-To field, consult section 3.6.2 of RFC 2822.

    Complete source code follows:

    C#
    using Rebex.Mail;
    using Rebex.Net;
    using Rebex.Mime.Headers;
    ...

    // create an instance of MailMessage 
    MailMessage message = new MailMessage();

    // and set its properties to desired values
    message.From = "bobr@example.com";
    message.Sender = "alice@example.com";
    message.To = "joe@example.com";
    message.Subject = "This is a simple message";
    message.BodyText = "Hello, Joe!";

    // send the message
    Smtp.Send(message, "smtpserver.example.com");
    VB.NET
    Imports Rebex.Mail
    Imports Rebex.Net
    Imports Rebex.Mime.Headers
    ...

    'create an instance of MailMessage 
    Dim message As New MailMessage

    'and set its properties to desired values
    message.From = new MailAddressCollection("bob@example.com")
    message.Sender = new MailAddress("alice@example.com")
    message.To = new MailAddressCollection("joe@example.com")
    message.Subject = "This is a simple message"
    message.BodyText = "Hello, Joe!"
    ' Send the message
    Smtp.Send(message, "smtpserver.example.com")

    This sample applies to the following components: Rebex Mail for .NET, Rebex Secure Mail for .NET, Rebex Total Pack 

  • Build 2896: Packages for .NET 3.5 and Visual Studio 2008 now available!

    We just released a small upgrade of all our components in order to bring you the installation packages for the recently-released .NET Framework 3.5 and Visual Studio 2008. Actually, this mostly affected the samples, because besides introducing a new versions of C# and VB.NET compilers, .NET Framework 3.5 just adds several new assemblies to what was already present in .NET 2.0 SP1, just like .NET 3.0 did last year. So Rebex assemblies for .NET 2.0, 3.0 and 3.5 are the same and come conveniently with all the samples in a single package.

    List of additional changes:

    • FTP: Added support for IBM 4690 file and directory listing format.
    • FTP: Fixed several bugs in MODE Z (compressed transfers) code.
    • FTP: Fixed several bugs in MODE B (block transfer) code.
    • MIME: When using iso-2022-jp charset to encode Japanese body text, ESC character (0x1B) is treated as 7bit-safe, matching the behavior of contemporary mail agents.
    • MIME: Added MimeOptions.AlwaysWriteContentTransferEncoding option to make it possible to force the MIME encoder to always output the Content-transfer-encoding header, even when it is 7bit.
    • MIME: Fixed a bug in MIME encoder that made it failed when a 16-bit Unicode charset was used in a message body.
    • MIME: Fixed a problem in a mail parser that caused e-mail addresses containing some special characters to be parsed incorrectly.
    • Time: Fixed a mismatched FAQ document.

    And in case you are wondering about support for .NET Compact Framework 3.5 that actually added new functionality to the core assemblies - we are working on a native .NET CF 3.5 build at the moment and we are going to release it as soon as possible. That build will contains some useful additions such as data transfer compression (MODE Z) support in FTP. In the meantime, you can safely use the .NET CF 2.0 package with .NET CF 3.5.

     

  • Build 2871 released: MODE Z, MODE B, PuTTY private key support

    This build is still not the big release with great new FTP features we announced last time, but it is well worth downloading though - check it out for yourself!

    FTP - MODE Z and MODE B

    FTP and FTP/SSL components got MODE Z and MODE B support. At the moment, MODE Z (data compression) is only available in .NET 2.0 or higher, because we rely on .NET 2.0's new System.IO.Compression classes. We plan to implement a custom deflate library next year and once it is done, the builds for other .NET Framework versions will get compression support as well.
    MODE B (available in all builds) is a special transfer mode specified by RFC 959 that makes it possible to use a single data channel for many subsequent data transfers - this is a huge benefit when transferring lots of small files, both in speed and TCP/IP socket utilization. The only known server that currently supports this is Microsoft FTP Publishing Service for IIS 7.0 - RC0, the new FTP server that will be a part of Windows Server 2008.

     

    SFTP - Support for PuTTY private keys

    PuTTY is a popular SSH client implementation that uses a custom format (.ppk) for storing the private keys for public key authentication. The latest release of Rebex SFTP supports this format as well, so you can use the same keyfiles from both PuTTY and Rebex SFTP component!

    Complete List of Changes:

    • FTP: Support for MODE B (block mode) with MS FTP7 that makes it possible to re-use a single data connection for multiple transfers.
    • FTP: Experimental support for MODE Z (data transfer compression) added to .NET 2.0 build.
    • FTP: Support for HOST command (multiple virtual FTP hosts on a single IP address). (Disabled by default).
    • FTP: Data channel now maintains a separate session from control channel.
    • FTP/SecureSocket: Added built-in PFX-based client certificate request handler.
    • FTPSecureSocket: Fixed a bug in the negotiation part of the TlsSocket class that caused problems when handling large packets.
    • SFTP: Fixed a bug in GetInfo and GetFileLength methods that caused an invalid length to be reported for files larger than 4GB.
    • SFTP/SSH: Changed the authentication routine to be compatible with servers that require a banner message to be sent to the client.
    • SFTP/SSH/Security: Added support for loading PuTTY private keys.
    • IMAP: Bcc property added to ImapMessageInfo class.
    • IMAP: IsEnryptedOrSigned property added to ImapMessageInfo class.
    • MIME: Added workaround for invalid base64 encoded headers with whitespaces.
    • MIME: Fixed problems in handling of filenames with invalid characters.

    Also, it is worth mentioning that we have finally changed the design of our website - hope you like the new look!

  • Build 2800 released: Bandwidth throttling and checksums in FTP, Twofish and Blowfish in SFTP, and more!

    It has been a while since the last release, but all the new features provide a perfect excuse for the delay!

    FTP - Bandwidth Throtting and Checksums

    FTP and FTP/SSL components got bandwidth throttling support that is extremely easy to use - just check out Ftp's new MaxUploadSpeed and MaxDownloadSpeed properties, and the new WinFormClient sample. Another new FTP feature is checksum support - many of the recent FTP servers have this nice feature that they can calculate a checksum of a remote file (or its portion) to effectively detect whether the local and remote file is the same. The Ftp class has three new methods to take advantage of this - GetSupportedChecksums, CalculateLocalChecksum (this method is static) and GetChecksum. Expect a tutorial for these soon!

    SFTP - Blowfish and Twofish Support

    There is no bandwidth throttling support in SFTP yet, because the underlying SSH is much more complicated protocol, but we will eventually add this feature as well. In the meantime, enjoy the new Blowfish and Twofish encryption algorithms and combined username/password + public key authentication for GlobalScape Secure FTP Server.

    MAIL - Explicit Mail Charset Settings, IMAP Enhancements

    Rebex Mail keeps getting new features as well - the MIME parser should now be able to parse nearly any broken MIME file, unless it is compete garbage. There is also a much-requested DefaultEncoding property for those who need to deal with legacy e-mail clients that don't support our carefully-chosen charsets - this property forces the MIME encoder to try the specified default encoding first before proceeding to the automatic detection. There is a new CreateReply method in the MailMessage class that makes it easier to reply to a message - you just have to fill in the text body, the rest is done automatically for you.
    We also added experimental support for Russian GOST R 34.10-2001 certificates to Secure Mail - only signature is supported at the moment, and you need CryptoPro CSP provider to be able to use it, but our Russian customers will surely benefit greatly from this feature. In the next release, encryption is going to be supported as well.

    IMAP also got two new features - support for IDLE command using a new overload of the CheckForUpdates method, and support for partial message retrieval - this has many possible uses, such as broken transfer resume functionality by downloading large messages by splitting the operation into multiple smaller chunks.

    There are also many new features under the hood in our Security component.

    Complete List of Changes:

    • FTP: Added Bandwidth throttling support - MaxUploadSpeed and MaxDownloadSpeed properties.
    • FTP: Added Checksum support - GetSupportedChecksums, CalculateLocalChecksum (static) and GetChecksum methods added.
    • FTP/SSL: Added FtpOptions.PauseBeforeUploadClose option to enable workaround for a problem of a missing last data block before SSL data channel close.
    • FTP: GetCurrentDirectory enhanced to support another non-standard reply format.
    • FTP: Added workaround for severeal MS FTP7 Beta problems.
    • FTP: Added FtpOptions.EnableMultipleBlockingCalls option to change the way multiple concurrent calls are handled.
    • SFTP: Default command and response encoding changed to Encoding.Default instead of standard UTF-8, because a survey of SFTP servers showed that none of them in fact uses UTF-8.
    • SFTP/SSH: Added support for Blowfish and Twofish ciphers.
    • SFTP/SSH: Added support for authentication using both username/password and public key at the same time.
    • MIME: New CreateReply method added to the MailMessage class.
    • MIME: Added workaround for Mac mail that is unable to correctly parse messages with a single root text/html entity.
    • MIME: Successive calls to Attachment.ContentMessage property now return the same object.
    • MIME: A new constructor overload added to the Attachment class.
    • MIME: DefaultEncoding property added - it is used to enforce a specific default charset for mail body and headers.
    • MIME: Broken base64-encoded inner messages are now converted to binary attachments during MIME parsing.
    • MIME: Added experimental support for GOST R 34.10-2001 certificate signatures.
    • MIME: Serialization bug in MimeEntity and MimeMessage was fixed.
    • MIME: Added support for broken 'eBay-style' time zones.
    • MIME: Support for several kinds of broken MIME-encoding in headers.
    • IMAP: ParseUniqueId and BuildUniqueId methods added to ImapMessageSet class.
    • IMAP: Added support for partial message retrieval using GetMessage method. This can be used for resuming failed downloads.
    • IMAP: Added support for IDLE command through a new overload of the CheckForUpdates method.
    • Security: Added experimental support for GOST R 34.10-2001 certificates and GOST R 34.11-94 hashes with CryptoPro (only signing is supported at the moment).
    • Security: Added new CertificateIssuer class for certificate creation.
    • Security: Added new CertificateChain-based certificate finder.
    • Security: Certificate revocation list is now available in EnvelopedData and SignedData classes.
    • Security: When the CertificateFinder property is changed in EnvelopedData and SignedData Certificate, the new finder is now immediately used to find any missing certificates.
    • Security: Several serialization bugs in EnvelopedData and SignedData classes were fixed.
    • Security: Certificate class has a new Extensions property that makes the extension collection accessible.
    • Security: Added support for Blowfish and Twofish ciphers.
    • SecureSocket: Fixed a bug in the server-side TLS/SSL code that caused a SSL2-style ClientHello message to be parsed incorrectly.

    What to expect in the next build? File transfer components will get a directory tree upload and download (a feature that is currently implemented by our ConsoleClient samples). We also plan to release a wrapper classes around FTP/SSL and SFTP components that will provide a unified API for both these protocols, making it easy to use both from your application. Various other inter-component features are also on our list, such as IMAP over SSH. Stay tuned!

  • HOWTO: Get the list of unread messages from an IMAP server in VB.NET

    Summary

    This post shows how to connect to an IMAP server and retrieve the list of unread messages. The code uses Rebex Mail for .NET component.

    Searching for unread messages

    One of the most common mail processing operations is getting the list of new messages. When using the IMAP protocol, you have to select the correct mail folder (or "mailbox" in the IMAP terminology), construct the appropriate query and search for messages. Don't worry - with Rebex Mail, you don't have to learn the complicated IMAP query language or do your own modified-UTF-7-encoding :-)

    The following code illustrates the whole process - it searches for messages marked as "not seen" in the selected folder at the IMAP server:

    ' find the unread messages 
    Dim messages As New ImapMessageCollection
    messages = client.Search( _
    ImapSearchParameter.HasFlagsNoneOf(ImapMessageFlags.Seen ) _
    )
    Console.WriteLine ("Found {0} unread messages.", messages.Count)

    ' list the unread messages:
    Dim message As ImapMessageInfo
    For Each message In messages
    Console.WriteLine( _
    "{0} | {1} | {2} | {3}", _
    message.UniqueID, _
    message.From, _
    message.To, _
    message.Subject)
    Next

    More searching options

    The search method is of course not limited to seen/unseen messages. To learn more about searching IMAP folders, please see our IMAP Search Tutorial. The Following table illustrates possible search parameters:

    Search parameter Description
    From(address) Messages that contain the specified string in their From field.
    NotFrom Messages that do not contain the specified string in their From field.
    To(address) Messages that contain the specified string in their To field.
    NotTo Messages that do not contain the specified string in their To field.
    CC(address) Messages that contain the specified string in their CC field.
    NotCC Messages that do not contain the specified string in their CC field.
    Bcc(address) Messages that contain the specified string in their BCC field.
    NotBcc Messages that do not contain the specified string in their BCC field.
    Subject(queryTerm) Messages that contain the specified string in their subject field.
    Body(queryTerm) Messages that contain the specified string in their body.
    FullText(queryTerm) Messages that contain the specified string in their headers or body.
    Arrived(on) Messages that arrived on the specified date (disregarding time).
    Arrived(since, before) Messages that arrived in the specified date interval (disregarding time).
    Sent(on) Messages that were sent on the specified date (disregarding time).
    Sent(since, before) Messages that were sent in the specified date interval (disregarding time).
    HasFlagsAllOf(flags) Messages with all the specified flags set.
    HasFlagsNoneOf(flags) Messages with none of the specified flags set.
    Deleted Messages whose Deleted flag is set.
    New Messages whose Recent flag is set and Seen flag not set.
    Recent Messages whose Recent flag is set.
    NotRecent Messages whose Recent flag is not set.
    Header(headerName, queryTerm) Messages that contain the specified string in the specified header.
    Size(min, max) Messages whose size within the specified interval.
    All Search for all messages. Same as GetMessageList method.

    Full code

    Let's see the full source code:
     

    Imports Microsoft.VisualBasic
    Imports System
    Imports System.Collections
    Imports Rebex.Mail
    Imports Rebex.Net

    Public Module MyModule
    Public Sub Main
    Dim server As String = "myServer"
    Dim username As String = "myUser"
    Dim password As String = "myPassword"

    ' create client, connect and log in
    Dim client As New Imap
    client.Connect(server)
    client.Login(username, password)

    ' select the folder for search operation
    client.SelectFolder("Inbox")

    ' find unread messages
    Dim messages As New ImapMessageCollection
    messages = client.Search( _
    ImapSearchParameter.HasFlagsNoneOf(ImapMessageFlags.Seen ) _
    )

    Console.WriteLine ("Found {0} unread messages.", messages.Count)

    ' list unread messages:
    Dim message As ImapMessageInfo
    For Each message In messages
    Console.WriteLine( _
    "{0} | {1} | {2} | {3}", _
    message.UniqueID, _
    message.From, _
    message.To, _
    message.Subject)
    Next

    End Sub

    End Module

    More info and links


  • Get all Rebex components in one pack for a discounted price

    Rebex have released two new component packs - Total Pack and File Transfer Pack.

    Rebex Total Pack

    To keep it short - when you purchase this pack you'll get all components offered by Rebex by now or released during the next year. The .NET, .NET CF and Source code variants is available.

    • FTP
    • FTPS
    • SFTP
    • S/MIME
    • IMAP/SSL
    • POP3/SSL
    • SMTP/SSL
    • NTP/SNTP
    • .NET, .NET CF and Source code variants available.
    • any other Rebex component released within 12 months after the purchase date
    • more info at www.rebex.net/total-pack
    • save $500 or more - pricing from $899

     

    Rebex File Transfer Pack

    Have you ever written code for downloading files from a FTPS server, only to realize later that your customer in fact wanted to use an SFTP server instead? Well, that's a completely different beast, yet some people still don't know the difference between FTPS and SFTP. With Rebex File Transfer Pack, you'll get both file transfer protocols in one bundle.

    Upgrade policy

    Any registered user of Rebex component wishing to upgrade to any version of File Transfer Pack or Total Pack is eligible to 15% discount. For more info, please contact sales@rebex.net.

  • HOWTO: Download emails from a GMail account in C#

    Summary

    The article shows how to connect to a Google Mail (aka GMail) mailbox, retrieve the message list and download the messages from your C# code using Rebex Secure Mail for .NET component.

    Setting-up GMail

    First, you have to enable POP3 access to your GMail mailbox:

    1. Go to Settings.
    2. Select "Forwarding and POP" tab.
    3. Enable POP for all mail or for new mail only (as seen on the following image).

    Connect, login and get message count

    GMail supports POP3 over TLS/SSL secured channel only. There are two variants of this - the Implicit and Explicit mode. The difference between these two modes is out of the scope of this article and is discussed in the connecting to the mail server using SSL tutorial. For now, we only have to keep in mind that GMail uses Implicit SSL mode.

    Now, let's write some code:

    
    
    using Rebex.Mail;
    using Rebex.Net;
    ...
    // -----------------
    // create the POP3 client
    // -----------------
    Pop3 client = new Pop3();
    try
    {
    // -----------------
    // connect and login
    // -----------------

    // Connect securely using explicit SSL.
    // Use the third argument to specify additional SSL parameters.
    Console.WriteLine("Connecting to the POP3 server...");
    client.Connect("pop.gmail.com", 995, null, Pop3Security.Implicit);

    // login and password
    client.Login(email, password);

    // get the number of messages
    Console.WriteLine("{0} messages found.", client.GetMessageCount());

    // -----------------
    // list messages
    // -----------------

    // list all messages
    ListPop3MessagesFast(client); // unique IDs and size only
    //ListPop3MessagesFullHeaders(client); // full headers
    }
    finally
    {
    // leave the server alone
    client.Disconnect();
    }

    Downloading the message list

    Once we are connected, we can download the messages or their headers. The POP3 protocol only enables us to download the message list with sequence numbers, unique IDs and messages sizes. When we want to get more interesting info such as 'who is the message sender', or 'what about message subject' we are forced to download the message. Well, not the whole message really, but at least the message beginning with all the message headers. As you can imagine, retrieving message headers from the mailbox full of messages over a slow network connection can take a lot of time. Let's implement two variants of the code - one is fast, the other is verbose:

    
    
    public static void ListPop3MessagesFast(Pop3 client)
    {
    Console.WriteLine("Fetching message list...");

    // let's download only what we can get fast
    Pop3MessageCollection messages =
    client.GetMessageList(Pop3ListFields.Fast);

    // display basic info about each message
    Console.WriteLine("UID | Sequence number | Length");
    foreach (Pop3MessageInfo message in messages)
    {
    Console.WriteLine
    (
    "{0} | {1} | {2} ",
    message.UniqueId,
    message.SequenceNumber,
    message.Length
    );
    }
    }

    public static void ListPop3MessagesFullHeaders(Pop3 client)
    {
    Console.WriteLine("Fetching message headers...");
       // Get the message list - full headers.
    // It could be quite slow on large mailboxes,
    // as full messages headers must be downloaded
    // for each message.
    Pop3MessageCollection messages =
    client.GetMessageList(Pop3ListFields.FullHeaders);

    // display info about each message
    Console.WriteLine("UID | From | To | Subject");
    foreach (Pop3MessageInfo message in messages)
    {
    Console.WriteLine
    (
    "{0} | {1} | {2} | {3}",
    message.UniqueId,
    message.From,
    message.To,
    message.Subject
    );

    // you can also download the full message with following code:
    // MailMessage downloadedMessage = client.GetMailMessage(message.SequenceNumber);
    }
    }

    More info and links


  • Build 2666 released: Streams in SFTP, new methods, lots of enhancements in MIME

    There are many new features in this build. The SFTP component finally has the long-awaited GetUploadStream and GetDownloadStream for stream-based remote access. These also support the Seek method, unlike the corresponding methods of the FTP component - SFTP is actually a much powerful protocol. SetFileDateTime method is also supported at last in FTP and SFTP, and both components got FileExists and DirectoryExists as well. In case you are wondering why it took so long for these methods to appear in Rebex FTP - there is nothing in the original FTP protocol that would make it possible to determine whether a file or directory exists and we had to resort to a complicated combination of various other commands to achieve the desired result. It should work for a vast majority of FTP servers - if it doesn't work for you though, please let us know about it!

    Users dealing with draconian firewalls might like the DataPortRange property that was added to the FTP component - this allows you to specify a local port range to bind the local end of the data connection for both active and passive mode.

    An annoying problem that caused an unnecessary slowdown of your transfers over SSL or SSH channel was also fixed in this release, as well as the GetConnectionState method that had an annoying habit of throwing an exception on disconnected objects.

    Finally, there is a number of smaller changes in our MIME parser - some of these are bugfixes, but most are changes towards better compatibility with various broken mail messages that circulate the Internet in vast numbers. And there is even more to come in the next release!

    Complete list of changes:

    • Installer: There is a new option to register the installed assemblies with Visual Studio .NET. Registered assemblies will appear in the .NET tab of the Add References dialog.
    • FTP/SFTP: Added SetFileDateTime method.
    • FTP/SFTP: Added FileExists and DirectoryExists methods. These simple operations are very hard to achieve using the FTP protocol and we use a combination of several commands to achieve the desired functionality. In SFTP, on the other hand, they are just simple wrappers around the existing SetAttributes method.
    • FTP/SFTP: GetConnectionState no longer fails on disconnected objects.: GetConnectionState no longer fails on disconnected objects.
    • SSH: Client no longer announces key exchange and encryption methods that are not supported on its current platform (only on .NET CF).
    • SSH: Fixed a bug that caused any extra key-exchange to fall.
    • SSH/SSL: Speed drop caused by ineffective data receiving loop was fixed.
    • SFTP: Added workaround to GetInfo method for WeOnlyDo SFTP server that reports missing files as access denied.
    • SFTP: Added GetUploadStream and GetDownloadStream methods for stream-based remote file access.
    • FTP: Added SetFileDateTime method.
    • FTP: Added DataPortRange property to specify local data port range for active and passive mode transfers.
    • FTP: GetFile/PutFile methods refactored to use the same infrastructure as GetDownloadStream/GetUploadStream methods.
    • FTP: GetList method optimized to parse the list on-the-fly, resulting in enhanced speed.
    • FTP: Removed unnecessary control channel checking code that caused a noticable slowdown of data transfers.
    • FTP: Fixed a bug in MLSD list parser - date/time was treated as local time.
    • FTP: In active mode, when waiting for the server to connect, error response is now processed as soon as it arrives, without waiting for the connection attempt to time out.
    • SMTP/POP3/IMAP: Added CheckConnectionState/GetConnectionState methods to check the state of the connection without sending any command to the server.
    • MIME: Broken MIME messages that use LF-only end-of-line markers instead of CRLF are now parsed as well.
    • MIME: Entities with a missing body are assumed to have an empty body.
    • MIME: Default Hebrew charset has been changed from iso-8859-8 to windows-1255.
    • MIME: If both iso-8859-1 and iso-8859-2 are unable to encode the text, windows-1252 and windows-1250 are also tested before trying additional charsets.
    • MIME: Fixed MimeEntity.Name and ContentDisposition.FileName properties that might fail for some filenames with invalid characters.
    • MIME: Embedded messages encoded as base64 or quoted-printable are now parsed correctly.
    • MIME: If content transfer encoding value is an empty string, 7bit is assumed instead.
    • MIME: Maximum allowed line length on input was extended to 65536.
    • MIME: Rules for parsing address headers were relaxed to allow more kinds of invalid input data.
    • MIME: Header parser enhanced to assembly multi-byte characters that were split across several encoded blocks.
    • MIME: IgnoreUnparsableHeaders option assumes a reasonable default for invalid content type headers.

    Special thanks goes to Yoni Douek for his extensive testing of the MIME component and lots of great suggestions!

  • Rebex SFTP (SSH File Transfer Protocol) now supports .NET CF

    Rebex SFTP component for .NET Compact Framework has just been released. It features the same API as the standard version, and both 1.0 and 2.0 versions of .NET CF are supported.

    Of course, it comes with many samples including simple-yet-usable PocketPC SFTP client (implemented in both VB.NET and C#) and SFTP tutorial.

    <marketingRant>Using SSH file transfer protocol on a Pocket PC, Windows Mobile and other similar gadgets has never been easier :-) </marketingRant>

    Download trial | Price from $449

  • Build 2621 released: IPv6 support in FTP, SFTP, SMTP, POP3 and IMAP

    Build 2621 brings support of the next-generation internet protocol, IPv6, for all our TCP components. IPv6 is supported in .NET Framework 1.1 or higher and .NET Compact Framework 2.0. At the moment, most networks still only support IPv4, and the same goes for FTP servers and mail servers. However, the adoption of IPv6 will only grow, and by using Rebex components, your application can be future-proof already - there is no need to change a single line of your code!

    We also fixed several minor incompatibilities in the samples on Windows Vista. No problems were found in the component assemblies.

    This build also comes with enhanced samples. In Rebex SFTP, there is a new Key Generator sample that can generate private keys for SSH key-based authentication, and support for this authentication method has been added to WinFormClient. In Rebex FTP/SSL, WinFormClient has been enhanced to support client certificate authentication.

    The TLS/SSL core used by FTP/SSL and Secure Mail has been refactored with an aim of making it easier to debug problems. This shouldn't affect you unless your application uses our SSL library directly.

    Complete list of changes:

    • FTP: IPv6 support with .NET Framework 1.1/2.0/3.0 and .NET Compact Framework 2.0.
    • FTP: Fixed a bug that caused the Close method of the Stream returned by GetDownloadStream to fail with some servers on fast networks.
    • FTP: Enhanced handling of uploads terminated by the server. More meaningful exceptions are now reported.
    • FTP: Compatibility enhancements in download aborting code.
    • FTP: Fixed a minor bug in FtpResponse class.
    • FTP: Upgraded to the latest version of Rebex SSL library.
    • SFTP: IPv6 support with .NET Framework 1.1 and 2.0/3.0.
    • SSH: Fingerprint property added to SshPrivateKey class.
    • SMTP/POP3/IMAP: Upgraded to the latest version of Rebex SSL library.
    • SMTP/POP3/IMAP: IPv6 support with .NET Framework 1.1 and 2.0/3.0.
    • SSL: New refactored TLS/SSL core introduced.
    • MIME: Fixed a bug in one of the MailAddress constructors that caused an exception to be thrown when a specifically malformed e-mail address was encountered by Imap's GetMessageList in envelope mode.
    • FTP Samples: WinFormClient supports client certificate authentication.
    • FTP Samples: WinFormClient is now Vista-compatible.
    • SFTP Samples: Key Generator application.
    • SFTP Samples: Public key authentication support added to WinFormClient sample.
    • SFTP Samples: WinFormClient is now Vista-compatible.
    • Mail Samples: Pop3Browser sample is now Vista-compatible.

    Now, we are going to concentrate on getting the Compact Framework version of Rebex SFTP and Rebex Mail ready. If you have a need for these components, stay tuned! GetDownloadStream/GetUploadStream for Rebex SFTP is also on the way.

  • Rebex Secure FTP name changed to Rebex FTP/SSL

    Since the release of Rebex SFTP component (an implementation of SSH file transfer protocol), the name of Rebex Secure FTP was no longer suitable for our FTP over TLS/SSL component, because Secure FTP and SFTP are just too similar. For this reason, we decided to change the name of Rebex Secure FTP component to Rebex FTP/SSL. We believe this will make it easier to distinguish the two components.

    • If you already purchased Rebex Secure FTP, nothing changes for you, except that any new releases available at our website will use the new name. No DLL names were changed, so there is no need to worry when upgrading to the latest version.
    • If you are currently evaluating Rebex Secure FTP and decide to purchase the full version, buy it under the new name of Rebex FTP/SSL.

    Also, we wrote a page that aims to explain the differences between different file transfer protocols and often ambiguous acronyms or common names. In case you need a file transfer protocol component for .NET and you are not quite sure which one, this page should provide some guidelines.

  • Build 2567 released: SFTP supports public key authentication

    Build 2567 adds an important new feature to Rebex SFTP component - support for public key authentication. Instead of using a password to authenticate, it is now possible to use an RSA or DSA private key instead. Check out the public key authentication and private and public key generation tutorials for more details.

    Additionally, there are several fixes and optimizations in Rebex FTP and our support libraries.

    Complete list of changes:

    • SFTP/SSH: Added support for RSA and DSA public key authentication.
    • SFTP: Added workaround for ShellFTP server that has a bad habit of dropping SSH sessions after the SFTP session is closed.
    • SSH: Added support for Diffie-Hellman Group Exchange authentication (RFC 4419).
    • SSH: Fixed a bug that caused Timeout value to be ignored when waiting for the server's initial message.
    • SSH: SshFingerprint class made serializable.
    • FTP: Rebex Secure FTP renamed to Rebex FTP/SSL in order to avoid confusion with Rebex SFTP.
    • FTP: Fixed a bug in the Close method of the stream returned by GetUploadStream and GetDownloadStream method.
    • Security: Added PrivateKeyInfo class and an ability to load and save private keys.
    • Security: Fixed a bug in DSAManaged class that made impossible to use keys of some sizes.
    • Security: Random big integer generator optimized.
    • Security: Several typos in documentation fixed.

    In the next build, we plan to add a key generation sample/utility and GetUploadStream/GetDownloadStream methods to the SFTP component.

  • New component: Rebex SFTP for .NET - file transfer over SSH

     

    A new component has just been released: Rebex SFTP for .NET.

    Rebex SFTP provides secure file system access over an SSH channel using the SFTP protocol. SSH is a set of standards and a protocol that allows establishing a secure channel between the client and a server. It uses public-key cryptography to authenticate the server and negotiate symmetric encryption keys and provides confidentiality and data integrity. SFTP is supported by the majority of SSH servers on Unix and Windows.

    Features include:

    • All basic file and folder operations.
    • Upload from memory.
    • Resumable transfers.
    • Lot of samples in C# and VB.NET including fully functional WinForm SFTP client and command line SFTP client.
    • Easy-to-follow tutorial for a quick start.
    • Multiple simultaneous operations.
    • Includes Rebex Security component with support for signature/verification, encryption/decryption, etc.
    • Complete C# source code is also available.
    • And more...

    With the addition of Rebex SFTP to our portfolio, we now provide components for both major secure file
    transfer standards - the other is FTP over TLS/SSL.

    See also: SFTP component homepage | Download trial | Pricing from $349

  • Build 2537 released: Serialization in Rebex Mail now actually works!

    Due to a missing attributes in one of the internal classes of the MIME component, serialization of MIME classes was often impossible. This also affected ImapMessageCollection and Pop3MessageCollection. The build fixes this issue. Additionally, some minor FTP exception we discovered few days ago have been corrected.

    Detailed list of changes:

    • Mail (MIME): Fixed a bug that often made serialization impossible. This also affected serialization of ImapMessageCollection and Pop3MessageCollection.
    • FTP: Fixed bad ArgumentExceptions in Ftp.Connect and FtpList.GetFiles methods.
More Posts Next page »
Powered by Community Server (Personal Edition), by Telligent Systems