Rebex Secure Mail
A product review by Richard Neal - PopCollect's lead developer.
About PopCollect and Rebex Secure Mail
PopCollect is a utility that retrieves emails from numerous POP3 servers and redelivers them to SMTP servers, using a custom schedule as defined by the user. It can be used to centralise an individual’s emails so that all of their Gmail, Yahoo mail, and AOL emails can be stored and managed on one single SMTP or Microsoft Exchange server.
Rebex Secure Mail is a programming component that can be added to any VB, C++ or C# program to allow the program to communicate with POP3 and SMTP servers, and manage the emails sent both to and from these servers. Email messages are treated as “objects” which can be further manipulated by the program.
Introduction
When we first started to develop PopCollect it became obvious that we could considerably decrease the development time of the application if we could incorporate a third-party component to handle most of the email communication functions. This would prevent me from having to write my own POP3 and SMTP modules from scratch, and it would also mean that I wouldn’t have to learn the entire POP3 and SMTP command syntax.
Having searched the internet for suitable email components that I could incorporate into our development environment I shortlisted two components that I thought most likely to meet our needs. Initially I felt it was important to try more than one product as I wanted to make direct comparisons between them so that I could see how they performed under different scenarios (for example, error conditions and malformed server responses).
However, it became clear very early in the development process that I should start to focus my efforts on just one of the components that I had shortlisted. The ease with which I could use and understand this component meant that I was able to effortlessly integrate it into our project, leaving me free to work on the bits that I knew needed most attention: the GUI, and the custom parts of the application that I was going to be coding from scratch.
Analysis of Requirements
I had a number of specific requirements for the components that I would be testing:
- Easy to understand
It was important that the command syntax was logical, easy to understand, and could be re-read and understood if I was to leave the project and come back after a while. I didn’t want to be looking at my code a year down the line and not be able to understand exactly what was happening. I always comment my code heavily, but I didn’t want to have to go back to the product documentation just to figure out what old code was doing! Rebex Secure Mail uses plain-English syntax for each command and function, so in most cases it is extremely easy to understand what is happening simply by reading through each line of code and applying common sense intelligence.
- Excellent documentation
I tend to write code late at night, outside of any regular support hours, and so a well-written instruction manual is absolutely key. Once I get an idea in my head I want to be working on it there and then, and I find the best way to learn about something is to follow through someone else’s written examples. Rebex Secure Mail excels in this area. Rebex’s website has extremely good tutorials on all of the basic features of their product, and these tutorials are well-explained and easy to follow. Each one is accompanied by example code so I can see exactly what is happening and adapt it into my own program.
- Flexible pricing (buy what you need)
PopCollect requires just POP3 and SMTP communication, so I didn’t want to pay for features that we weren’t going to use. IMAP just isn’t used in any way by PopCollect so I didn’t want to be paying for this feature. A key benefit of Rebex’s pricing model is that it allows us to do just that – to pay for only the features that we need.
- Good support
If I find that I need support or technical help then I want to be sure that the support team will come back to me quickly and that my emails requesting help won’t just disappear into a black box. I am happy to say that I have not needed any technical help for the Rebex product, thanks in no small part to the excellent tutorials and documentation on their website. But on the occasions that I have emailed the company to discussing pricing and support options they have always responded to me quickly, professionally and courteously.
- A clear product development history
It is often the case when you purchase (or licence) a component that you get “free updates” for a year (or some other period) following your purchase. This doesn’t offer much benefit if the product isn’t in active development, so I was happy to see two documents in particular on Rebex’s website. The first is their achievements to date, noting the components they have written and still support since their inception in 2002. This shows a historic product development path of constant progress with many components, reassuring me that they have an active and varied skillset instead of just focusing on one particular feature. This is important because if new commands or features are incorporated into future POP3 or SMTP servers then I want to be sure that the development team will have the skill to adapt their product accordingly.
- A recently updated build
Hand-in-hand with a clear product development history is the date of the build of the component I’m purchasing (or licensing). If the product was last updated two years ago then not only are my “free updates for one year” likely to be pointless, but I have no confidence that the people who wrote the component are still at the company, or whether this has now become a stale product that is just being churned out whilst it still works. And if we upgrade our development environment at a future date, will the component be updated to work in this environment? I am happy to say that the Rebex component I downloaded as a trial version was released just two months prior, and its change log shows an active development cycle over the previous years.
- Good error-reporting
I’m not a perfect programmer by any means, and if something is going wrong in my application then I need to know why. It is therefore absolutely vital that any component is able to feedback sensible and helpful error codes when an exception is encountered. Once again the Rebex product works extremely well in this regard. In fact it offers two levels of error-reporting, and I have used both of them to work out just why my code wasn’t doing what I expected it to be doing. I’m happy to say that thanks to this error reporting I have always been able to work out what was happening, and adjust my code to compensate. And on every occasion I have been able to do so without having to contact the support team. The Rebex product throws an explanatory exception when an error is encountered, and this exception details the exact nature of the problem. For example, in the case of a POP3 authentication exception it states “Authentication failed” instead of just “cannot connect to server”. This is helpful both to me as a developer when testing or debugging my code, and also to the end-user as this is the error message that they will see through our application’s GUI. What’s more, if this error-reporting does not provide enough of a clue then the Rebex component can even write a log of all of the commands as they are sent and received to and from the POP3 or SMTP server. So I can see, almost in real-time, what commands our program is sending to the server (through the Rebex component), and what that server’s response has been. I have successfully used both of these error-reporting methods on numerous occasions to successfully debug the program and diagnose connection problems.
- Royalty-Free Distribution
We wanted to pay a fixed-price for the component, and then have the rights to bundle that component as part of our program without having to pay an extra charge for every copy of the program that we sell. Not to redistribute the component itself of course, just to include the licenced component DLLs as part of the installation package. Some companies charge heavily for this “feature”, but I’m happy to say that with Rebex this is all included in the price of the licence of the component itself. And that licence is also perpetual – we don’t lose the right to keep redistributing the licenced component after a period of time (for example, after one year). So if we choose not to renew our support contract with Rebex in twelve months’ time then we don’t lose the rights to continue to use and distribute their component.
Conclusion
Rebex Secure Mail has proven to be an excellent product, and I was able to fully understand it and integrate it into our program well within the 30-day trial period that I got when I downloaded a free evaluation copy of the software. This serves to prove that it is easy to understand, functionally capable, and has excellent documentation and example tutorials to allow any programmer to use it with ease. PopCollect is the first of many programs from NealTech, we have many more ideas brewing, and I know for a fact that I will be coming back to Rebex to trial some of their other components. Theirs is likely to be my first choice for communication components for our upcoming projects in 2010, and I have every confidence that they will all be as easy to use and as well documented as the Secure Mail component.
It is a further testament to my satisfaction of the product that we have now signed-up as a Rebex reseller and will be recommending their components to the development teams of some of the companies that we work with – there’s no better marketing than a personal recommendation from someone who’s actually used the product and has had direct hands-on experience with it.
If you also have a need for a communication component for your program then I would encourage you to check out what is available at www.rebex.net, and to download a free, fully-functional trial version to test it out for yourself. I’m confident that you will be as impressed as I was with the quality of the product.
Richard Neal, January 2010.
Download PopCollect today, and see for yourself
how easy it is to manage multiple email accounts
