The following question: How to send 100.000 emails weekly, on Stack Overflow got me tingling a bit. How to send thousands of e-mails (commercially or on your own), without being blacklisted.

I have implemented two solutions for this, one in PHP, and one in .NET. Sending e-mail in bulk can indeed be A LOT of work with many frustrations and dangers — particularly when you realize you have just hit SEND on a batch of thousands of e-mails and there was something wrong with all of them. That’s why you need throttling, a way to stop the sending should you spot anything wrong AFTER sending the mail.

I don’t know of a free .NET solution for this. For PHP, I have used phpList quite successfully in the past but the looks and a few of the features are starting to get old.

Just a few tips, if you’re developing your own solution:

  • Use throttling by all means. What this means is, sending mails gradually, a few per minute, using a script or scheduled task.
  • Create a way to halt the sending should you spot anything wrong.
  • Try shuffling the domains you’re sending to.. don’t send to the same domain all at once. Typically, depending on your list, a large percentage of your subscribers will be on the same domains. Over 75% of my subscribers on various businesses were on Yahoo.com.
  • Make sure you have proper PTR, SPF records for your domain.
  • Make sure that the host name/IP (machine) you’re sending from is the same as the one you add in the SPF. Some servers do reverse DNS look-ups and block your e-mail if the records don’t match.
  • Make absolutely sure that the unsubscribe methods WORK for all users. People will mark you as spam if they get annoyed that they can’t unsubscribe.
  • If you manage multiple mailing lists, give them a way to manage their subscriptions, either using logins or a hash for uniquely identifying the users.
  • Setup a test list with addresses you own, on as many domains and e-mail services as you can and first send a test run for every message you send — to check if it gets marked as spam, and how the e-mail looks (specially if you send as HTML).
  • Further, check your e-mail (when you’ve finished it), using a free spam checking service such as this one. These can give you a rough idea of how your e-mail is interpreted by the spam checking programs (such as SpamAssassin) and point a few things you could fix.

My new CMS (CCIDESQ3) has a mail queue and mail sender with throttling, batches, actions on batches and some of the features above.

I would be curious what other readers are doing. Do you go to the commercial solutions or try to do your own and hope for the best? If on your own, what solutions do you use?