Both custom solutions and third-party solutions have advantages and drawbacks. Custom solutions are personal and tailored to your situation. However, you must also provide support for a custom solution; such support includes training new team members on the solution’s capabilities and limitations, and you must develop and improve the code base by yourself. This requirement means that you not only know the problems to be solved but you can solve them without creating further problems (e.g., preventing the flow of necessary email or crashing SMTP servers).
The primary problem with third-party solutions is how to evaluate the cost trade-offs of so many solutions. You can peruse newsgroups or ask for recommendations from your peers or business partners, but too often you just receive horror stories that no longer apply to the current software version. Just ask a few coworkers what kind of car you should buy, and you’ll see that product selections are based on personal decision criteria that might be different from your priorities or needs. For these reasons, I recommend that you try to personally test as many products as you can.