Fog Creek Software
Discussion Board

Dart vs. IP*Works?

We've been using Dart for email processing in FogBUGZ, but there seem to be some really subtle timing related bugs in one of the components that we can't reproduce reliably enough to get them to fix it. Now we're considering switching to IP*Works to make this whole problem go away. Does anyone have any experience with the quality of the IP*Works components? I wouldn't want to trade one set of bugs for another. As usual, we're suffering for not rolling our own, but at this point creating a complete MIME email parser from scratch would be an awful lot of work compared to the price of these commercial components...

Joel Spolsky
Monday, June 16, 2003

We use IP*Works just for one use -- to upload files via http, avoiding some ftp problems -- and it works 100% fine. SmartDraw uses it for the same purpose -- to upload diagrams to the site to share with others -- and I believe they are 100% satisfied. But we use only one of many parts of IPWorks.

Harvey Motulsky
Monday, June 16, 2003

I'm not familiar with Dart, so this may not serve the same purpose - you may want to check out JMail at: (Note: NOT
JMail allows you to send email from ASP or Windows programs very easily; it needs an email (SMTP) server that it can connect to to actually send the email. The price for commercial use is $95 or $145 per server, and a free trial download is available. I have been using this product for internal use at work on a small scale for some time, and it has worked well for me.

Philip Dickerson
Monday, June 16, 2003

This is a bit silly, but the only thing I know about IP works is that a few years ago I had a demo version downloaded, and everytime I ran setup in my windows directory I got the IP works setup rather than the windows setup.

Toby Allen
Monday, June 16, 2003

I've used the part of it that lets me take HTML from other pages for a custom traffic route page ( ). Except for one odd licensing thing my host had after reimaging a server, it's been very stable.

John S.
Tuesday, June 17, 2003

I've got two IP*Works components running in an application - IPDaemon and FTP. Since February it's processed 5,000 documents without a single error.


Tuesday, June 17, 2003

One of my customers is using IP*Works (actually the C++ variant) for Pocket PC development. They are highly satisfied. Good documentation, very stabile. The only problem they had was getting rid of the nag screen (which is part of the demo license). It used to pop up, even after entering the license key.

Michael Vesely
Tuesday, June 17, 2003

I have used the C++ DLL version, the VB version, and the scripting version. All three work great. I have zero complaints. I have used at least half the components at some time or another. Overall, they're probably the highest-quality third-party components I've ever used.

Troy King
Tuesday, June 17, 2003

I've used IP*Works on four different platforms: VB6, eVB, .NET and CF.NET for Pocket PC. Mainly tcp, udp and http. These products are very stable and are accompanied by excellent documentation and samples. I have also used there support, and got rapid answers. I had problems with registrations, they use different procedures, although the products are very similar on the different platforms. In short, I've saved lots of time.

Christer Nilsson
Tuesday, June 17, 2003

If this was a Delphi project, I would recommend you the Indy component set. It is simply outstanding!

John K.
Tuesday, June 17, 2003

I used the C++ components many years ago.  Wrote a TCP and UDP client/app that is still in use today.  no problems.  Very Solid.

Gregor Brandt
Tuesday, June 17, 2003

There's a company called ChilkatSoft that makes several types of components. I currently use their XML parser. I subscribed to their mailing list, and I've seen a lot of satisfied people using thier email components and systems.

Their URL is

Tuesday, June 17, 2003

I'll second the comment that the Indy components are outstanding. If you had a multi dev-platform shop then it would be worth encapsulating your logic in a Delphi COM component and utilizing them (or having the same done for you).

Dennis Forbes
Tuesday, June 17, 2003

Not being familiar with either product, I have to ask what are your requirements?  Are you just generating emails and sending them?  Do you need to process incoming emails? 

Rick Childress (
Tuesday, June 17, 2003

Right now we use POP3 to get email, including secure (SSL) POP3, and need the ability to parse incoming MIME messages and messages with UUENCODED attachments.

We have a few other uses in the future but that's the most urgent need right now to replace the sporatically-crashing DART controls.

Joel Spolsky
Tuesday, June 17, 2003

Haven't used this personally, but it looks like it meets your reqs.

I don't know how crunched you are for time, but they have a 20-day free eval.

Rick Childress (
Tuesday, June 17, 2003

You may also want to check out Dundas Mailer ( ).  This is a commercial quality ASP component, and has the added benefit of being free to use.  (There may be a license fee to re-distribute it with your application.)

Edward Livingston
Tuesday, June 17, 2003

Do you want to stay COM or do you want .NET?


Dave Wanta
Tuesday, June 17, 2003


Joel Spolsky
Tuesday, June 17, 2003

Out of curiosity , why do you want to stay COM over .NET?

Daren Dahl
Tuesday, June 17, 2003

Joel Spolsky
Tuesday, June 17, 2003

Hey Joel,

Out of curiosity, are you guys still working on the "SecretNewProduct" metioned in that article? That was almost a year ago, so I'm more interested in what that indicates about the new product development timeframes at a well run and organized shop than what it actually is (Though if it works with FogBugz in some manner I bet I'd love to have it, maybe further expansion into the other aspects of running dev projects/teams/companies?).

On that last thought, I've been using FogBugz for the last two months or so and I must say it is absolutely excellent. You definately do things right, Thanks.


Tuesday, June 17, 2003

Started using IP*Works! for Delphi 1 back in 1996, have grown through their 32bit versions and now am using IP*Works! 5 for .NET. Same consistent performance I've experienced for the last 7 years.

I use HTTP, STMP, FTP and POP3 components for the most part but have dabbled with others.

I heartily recommend them.


Tuesday, June 17, 2003

My experience with Ip*Works has been bad. I had a specific need for a secure ftp java bean component which they had. But the product was not mature and was not tested on different platforms. I wasted 2 weeks in talking to them and ultimately wrote the component on my own.

Sri Nivas
Tuesday, June 17, 2003

I just ran into someone last week who was raving about the product. He said they have used it for 3 years in a commercial product without a single problem. And although I have no personal experience with the product, I do trust this person's opinion.

Marc LaFleur
Tuesday, June 17, 2003

Back in 2001 we tried to use IP*Works in our application. It was a COM MTA highly scalable but very demanding application. After spending a lot of time to solve the threading issues we had with IP*Works we decided to buy the source code. We had a good laugh because half of their methods had the TBI comment.

We decided to implement our own wrappers for most network protocols (I implemented the NNTP one but other developers had to implement in various degrees HTTP, SMTP, POP3, FTP protocols) that we used in our server. Back than our impression was that IP*Works is designed for a VB environment for the average application. No way can one use it in a mail or newsgroup server. Things might have changed though.

In the end I used the IP*Works only to encode/decode MIME multipart attachments but even there I did most of the message composing separately (I can’t remember exactly what IP*Works MIME limitation I encountered).


Wednesday, June 18, 2003

thanks Joel

i've been thinking that it has been an error in my code, and have been trying to find out why the App i've created doesnt work as expected. But yes, i get the same issues using Dart, happens about once a week (it is used in a winNT service)

Wednesday, June 18, 2003

We use the Delphi IP*Works and have agreat success.  We also use the Delphi SSL components without any big issues.  We have found a few bugs but the developers at IP*Works return emails promptly and with good solutions or workarounds.

Chris Woodruff
Wednesday, June 18, 2003

Sun JavaMail API's - all the MIME processing you need for free.

James Nicoll
Wednesday, June 18, 2003

Are you _sure_ that rolling your own mail/MIME parser would be inefficient?  I speak from experience here; I've written just such a beast in Java; it took about two business days to develop and another one to test.  JavaMail had misfeatures I couldn't work around, so I slapped the big "NIH" sticker on it and wrote my own.  That same parser has been in a commercial product for months now.

A good reference for mail message format is (RFCs 822 and 2822 are a nightmare to read, let alone implement).  The MIME RFCs stand up pretty well on their own.

Lucas Bergman
Wednesday, June 18, 2003

What "misfeatures" (is that a new word btw? lol) in Javamail are you referring too?

James Nicoll
Wednesday, June 18, 2003

I think Lucas made up a word for the old tried-and-true "It's not a bug, it's a feature" : D

Rick Childress (
Wednesday, June 18, 2003

I've used IP*Works 4 when it was marketed for PocketPC development.  It didn't work.  It required the 2.0 IP Stack, which PocketPC 2000 didn't have, and they refused to refund my money.  Finally, they gave me version 5, 6 months later, after my project was dead in the water from being so late.

I'm now using version 5.0 for a ATL Server project; specifically, their SOAP component, since it has no dependencies like MS SOAP does on COM.  I've already notified them of 3 bugs, one they refuse to acknowledge as a bug, one they ignore and another they say is "by design".  Unfortunately, there isn't another product that meets our needs, so I'm forced to code around their inadequacies.  If I had source, it would be a different story.

Your mileage may vary.

Todd Brooks
Wednesday, June 18, 2003

I did not make up the word "misfeature":

What I meant specifically was something like the following (forgive inaccuracies; it's been a while): JavaMail's main message parsing and construction APIs provide a two-way map between mail messages (big bags of bytes) and mutable Java data structures.  You then access the data structures by doing things like getHeader("from") or whatever.  The problem I kept running into had to do with how JavaMail plays fast-and-loose with the underlying byte structure of a message when manipulations happen to the data structure.  This isn't normally a big deal, but I was doing S/MIME, and innocent-looking changes to the S/MIME code would play havoc with the message bytes and screw up digital signatures.

This isn't really a problem per se with JavaMail; it just wasn't a fit for my application.  So, I read the specs and rolled my own mail parsing/serialization toolkit where the data structure is immutable, sidestepping the problem.

Lucas Bergman
Thursday, June 19, 2003

Joel, someone suggested you Indy components, so I give you the link:
They are free, with source, multiplatform (there is the Kylix - GNU/Linix version too) and really high quality.
I don't want to start a language war, but you should really change VB to Delphi.  Having the sources of all your components, the possibility to extend and improve them in OO way, and probably the best RAD tool on earth is a must for hight productive, successful developement.
I switched long time ago (VB4 -> D2), my cousin did the same some yeras later, and both are REALLY happy of the move. Also converting app. from VB to Delphi is not that long / bad.
Just a friendly suggestion :)

Marco Menardi
Thursday, June 19, 2003

An open source product that meets your needs today may be better for you than a closed source product that meets tomorrow's needs.

That is, if you imagined you had the Dart source, do you think fixing the bug would be less work than realigning for IP*Works components?

Closed source software, as you well know, is a serious risk-- especially in platforms and components. 

If you have open source components, you can have your cake (get cheap components) and eat it too (solve immediate needs by patching or forking).

Jeremy Dunck
Thursday, June 19, 2003

No kool-aid for me, thx.

Rick Childress (
Friday, June 20, 2003

I have no experience with IP*Works, but I would highly recommend <a href=">Mabry</a> components. They should have what you need.

Russell Davis
Friday, June 20, 2003

I have mixed feelings about IP*Works. I've worked with their components for both Windows and Pocket PC. I don't think their documentation is all that great - it tends to be a list of all the properties, methods and events, without a lot of samples to really get things rolling. (Yes there are some samples, but there never seem to be the ones that I want.)

For the most part, I've had good support. (Once they dropped the ball on an email from me, but they were very apologetic when I pointed it out to them.)  Their products generally work as advertised.  I don't think they always take the most elegant approach, but they work.

What I really wish they would do is unbundle their components, especially for the Pocket PC. I find the costs of their Pocket PC components prohibitive. I understand that there isn't as much demand, and so I can expect to pay more for those controls. But usually I'm only interested in one or two controls, and paying $800+ for 1 or 2 controls to do something fairly simple is usually too much, and I'll look for other alternatives.

Avonelle Lovhaug
Friday, June 20, 2003

The QuikSoft objects
are ok, but there are some impedance mismatches between the IMAP component and the underlying protocol. You don't get a lot of fine control over performance parameters.

The SMTP component is good, and it does i18n character encodings on the fly if you ask it (for most of the fields in the message, not all).

Christian Mogensen
Monday, June 23, 2003

Have you considered using Microsoft's Collaboration Data Objects ( I used it to create Web Archive files (.mht; in fact, nothing but MIME-encoded HTML pages along with images it contained), insert them into mail messages as attachments and send them out. CDO supports message parsing, too. And it's a COM object.

Mladen Jablanovic
Tuesday, June 24, 2003

We are using IP*Works when we found the Indy components that come with Delphi could not handle our needs for SSL security.  Our application (we are an ISV) requires client-side authenitication for SSL in certain situations, and Indy apparently does not support this.  We spent many weeks trying to get it to work.  We then tried the IP*Works component for SSL and it worked within a few hours.  We have been happy with them, but have not had much interaction.

Howard Dunlavy
Tuesday, June 24, 2003

Let me chime in too. I've used IP*Works for a few little projects over the years and it has worked great, as documented, no problems. I've used the ActiveX version with my applications which are typically written in (the cool but rather obscure) CA-Visual Objects.

M. Schumann
Tuesday, June 24, 2003

Answer to "coresi" (regarding source and TBI) comments.

/n software has *never* sold IP*Works! source, so you must be talking about something else.

Gent Hito
CEO, Founder - /n software

Gent Hito
Thursday, June 26, 2003

Speaking of Indy, IP*Works and Delphi - try Clever Internet Suite v 3.0 - it blows both away then it comes to features, performance and most important stability

Here's the link

And so far it is the only library which uses "out-of-sync downloading combined with splitting the resource being downloaded into sections and loading all the sections simultaneously"

Thursday, June 26, 2003

I've tried their SSL component on behalf of a customer. It has some subtle problems with thread safty in relation to the way the windows message pump works. Even when we realised this was the problem in their code we could not seem to find a workaround that worked all the time an on all the OS platforms we support.

IP*Works support staff were friendly and responded quickly, but did not come up with a solution we could use. It is somewhat discourageing to get a response like: "You have multiple threads in your program? That seems like an unusually complicated setup".

Morten Krog
Saturday, June 28, 2003

I was once hired to fix/write some code that "absolutely positively" had to be multithreaded and written in C++ (I wish that they could have understood the concept of sunken costs). I ended up using CDONTS for the mail processing after experimenting with Dart and IP*works. I called the end result "spambot" as it was written to send out about 100,000 emails per week: "thank you for your order, the ups tracking # is.." or "thank you for your order, but the credit card has been declined, please call 1-800blahblah" and about 50,000 newsletters also. If they were willing to put up with VB, it could have been written and deployed in 3-5 days. As it was, it took about 4 months, the first month of which was trying to decypher the code that the original consultant wrote port it to Visual C++ (the author wrote it for CBuilder and the company would not purchase CBuilder), then discard all of it, since it could not be made to work. And the last month was working around a memory leak in ado 2.6. Spambot could have been deployed on a 486 if a computer that old could have been found. I am a firm believer in using cheap old computers to partition out tasks.

Peter Lorenzen
Monday, June 30, 2003

One of my former employers make extensive use of the IP*Works components in Delphi applications for email (outgoing, SMTP) and file transfer (incoming, FTP) in around 1999/2000.

o  Performance was only "OK" - couldn't saturate even a 56K dial up link with an FTP download;

o  Reliability was good - but we were only ever connecting to one server, a piece of Sun big iron;

o  Developer interface was shocking - everything was done with properties (getters and setters) instead of proper methods.

eg: To start an FTP transfer once it's been set up:

Active := true;

The kicker being that the assignment doesn't return until the transfer is complete. Yeuch!

I don't know how their current offerings stand up, but I'd go a long way telling people to avoid their offerings from circa 2000.

Bevan Arps
Friday, July 4, 2003

Took a quick look at TurboPower's IPro, which is now free on, and it has support for smtp/pop3 and mime. It may cover your needs. I have only used the basic client/server components myself, and they work very well.

I do not use IP*Works, the main reason being that the licensing mechanism reads a fake property from the DFM, and so you can't easily create the components at runtime. How incredibly silly! You can stream in the components from a source, e.g. a TStringStream, which includes that fake property, grabbed from the DFM at design time. But I don't want that kind of nonsense in my source.

Bent Tranberg
Friday, July 11, 2003

I'm a happy IP*Works user. I don't know much about the email components, but one thing that seems to separate /nsoftware from the other offerings discussed in this thread is that they have a very complete IP suite - I've looked at most of the other references here and there's nothing like IP*Works IPPort and IPDaemon which provide out-of-the-box tcp/ip client and server components - way above a 'socket' api. Their IPDaemon in particular has been completely bullet proof for me - and that's with implementing a multi-threaded server app with it. I've written gobs of winsock and unix socket code and this stuff is an absolute dream in comparison. I wrote a client/server app in C++ with these components in less than a day and its been running without problems for a couple of years.

Tuesday, July 15, 2003

Hi Joel,

I have used Dart Mail Components (SMTP & POP3) for about 6 month at the begining of 2002.

After a while we realised that there are some Dart bugs that we could not avoid. 1st of all I am talking about memory leaks; this is very simple to reproduce using VC++; write a function that loads a mail from disk in a dart mail object (I was using deafault #import smart pointers and the code had less then 10 lines - so very unlikely to be a leak caused by my code). Call this function 10,000 times and watch the memory going up and up..

Also I have encoutered problems when saving a mail on disk: on saving the line separator used was ASCII sequence #10#13#10 instead of just #13#10.

Also some crashes in multithreaded evnvironment, but I must admit that this may have been caused by my code; anyway the first 2 points were enough to dump Dart.

Now we have wrote our own POP3 implementation and for advaced parsing we are using CDO (btw: CDO also has some lekaks).

So, Dart left me with the impression that although they seem to have a professional-created image (site and support department), they don't really have professional code.

And yes, marketing/sales/support are not-so-bright :-P, when I posted on their forum the 10 lines of code that demonstrated the leak, they kept asking if I can reproduce this with their examples; but how the hack could I reproduce it with their sample code since this did not contained a large loop to illustrate the leak clearly; duh!

The good points of Dart Mail would be that they have a lot of features (which is useless if they have a leak and you try to use the components in a Win Service) and the support department made the effort of calling me on the other side of the planet, but I was already a lost case by the time they called..

So, unless they I have seriously improved the mail componets in last year, I don't advice you to use dart mail components

Adrian-Bogdan Andreias
Monday, August 4, 2003

*  Recent Topics

*  Fog Creek Home