NOTE: when I first read your question, I thought it said hundreds of thousand emails at once. When I double checked, I noticed it actually said hundreds to thousands. I'm too lazy to change my post now, so here are some caveats: From my experience, you can probably run fine without a commercial tool to about 40K. At about 10K you'll want to be following the 'minimum' list to prevent major pain when you start reaching larger list sizes. I do recommend implementing it all right away though.
I've said this before, there are two sides to sending email:
- The technical side -- basically all
of the RFC's around the smtp
protocol, email formats, DNS
records, etc. This is mildly
complicated but solvable.
- The magical side -- email delivery
management is voodoo. You will get
frustrated, things will break for no
apparent reason and you will
consider leaving for another job
that doesn't involve email.
I recommend not writing your own bulk sender. I'm sure PHP can do a fine job, but you should probably spend your time elsewhere. The two products I've used in the past and recommend are Strongmail and PowerMTA. Be warned -- they have a high price tag, but I can almost guarantee that you'll spend more building your own solution in the long run.
One area that you'll get nailed with writing your own in PHP is throttling/tar pitting. Mail servers will start adding in sleep(30)'s after you've sent a few messages to slow you down and stop you from spamming.
Typically, these commercial bulk senders run the SMTP protocol for queueing. You would continue to use Zend_Mail, but hard code it to connect to your server. It'll queue the mail just about as fast as you can send it, then use it's own engine to send the mail to their destinations.
At a 100K list, you will have to employ email best practices. At a minimum, you'll need:
- SPF Records, possibly DKIM as well
- Multiple IPs to segment traffic over -- have 3 IP's, one for quality address you trust, one for medium risk IP addresses and one for high risk IP addresses. This design helps minimize the risk to getting mail to your best customers.
- Proper reverse DNS for sending IP addresses
- Use the feedback loops from AOL, hotmail, yahoo and others for processing spam complaints
- Unsubscribe and bounce management -- make sure you're pruning these addresses
- Having open/click tracking is also important -- if you're customers on the A list aren't opening your emails, you need to degrade them to the B list and so forth. This is important because ISP's will turn inactive accounts into a honeypot. Hotmail is famous for this.
Finally, if you're really serious about sending email, you'll want some other tools like Return Path.