Choosing SMTP component

Posted on 2003-03-05
Medium Priority
Last Modified: 2010-04-04
I need to send email using SMTP protocol and I found few ready-to-use solutions (FastNet, Indy and Turbopower Internet Professional).
But before I pick one of them I'd like to know if anyone had any problems with them.

Stability is very imporatant for me. Much more than speed.

So, do you have any thing to say about those components.

(more points will be given for multiple answers)
Question by:rpo
  • 2

Accepted Solution

loufeliz earned 200 total points
ID: 8072902

I would highly recommend that you utilize the Indy components to send mail.  I am currently using them in a Web Application and desktop apps with great success.  Use the latest version available at http://www.indyproject.org

I use a  Web Development Helpers wrapper unit that I downloaded from

It has a function that wraps up the SMTP SendMail function. I extended it a bit more to accept attachments and a text file for the message body.

FastNet - I never used them, too many problems according to Delphi Newgroups.
TP IPro, - never used.

I have also used a set of components from Argosoft http://www.argosoft.com.  

Good luck to you.

- Lou

Expert Comment

ID: 8074527
I have found the ICS components to be the fastest performing, best supported, and most complete of any of the options, either open source or commercial.

I recommend against any pseudo-blocking component - Windows network handling requires that the message pump not be blocked.  A true blocking component will simply not work (once the thread is blocked it cannot receive network messages), and a pseudo-blocking component introduces the possibility of message loss and application lockup under high loading conditions.

Non-blocking components such as ICS provide higher performance and better reliability under Windows.  Several thousand concurrent users have been served off of one thread using non-blocking ICS components.  ICS is also fully thread safe.

The downside to a non-blocking component is that you must think like a real Object Oriented programmer, not aprocedural programmer in a component environment.  This is a short but steep learning curve for most people.

If you plan to port to linux, then you must use a blocking component in your linux version.  This is because linux' network handling is bound to threads rather than messaged to threads.  There is a port of ICS to the linux/Kylix blocking model that is almost drop in.  

ICS has been around since Delphi 1, and is supported under D1 through D7, several versions of BCB, and Kylix 1 through 3, all from the same source files.  There is a project underway right now to add SSL support to the suite.

ICS is written entirely in Delphi from the Windows API to the component interfaces, and is shipped with source.  The cost is one postcard with one nice stamp (The post card is for Francois, the initial author and major contributor to the code base, and the stamp is for his daughter who collects cancelled stamps.)

Support for ICS is by other users of the suite on a free mailing list.

"Throw out everything else and use ICS" was the first piece of advice anyone ever gave me on EE, and it is the single piece of advice I pass on most frequently.

ICS is available from overbyte.delphicenter.com  It comes with full source code and usage examples for all components.  Each component implements the full RFC specification that it embodies.

Good luck!

Author Comment

ID: 8111299
Well, thanks to both of you. I'll pick either Indy or ICS after some checks.

I accept loufeliz' comment as an answer. The same amount of points for swift99 will be available in separate question.

Expert Comment

ID: 8111476
Thank you!

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Creating an auto free TStringList The TStringList is a basic and frequently used object in Delphi. On many occasions, you may want to create a temporary list, process some items in the list and be done with the list. In such cases, you have to…
Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
Planning to migrate your EDB file(s) to a new or an existing Outlook PST file? This video will guide you how to convert EDB file(s) to PST. Besides this, it also describes, how one can easily search any item(s) from multiple folders or mailboxes…
Is your organization moving toward a cloud and mobile-first environment? In this transition, your IT department will encounter many challenges, such as navigating how to: Deploy new applications and services to a growing team Accommodate employee…
Suggested Courses

599 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question