I have found a solution to my bulk email problem. I'm posting my solution simply because I spent nearly a year finding it, and I KNOW there's many other people in my same situation.
First, a recap of my problem: I need to send personalized emails to my member list on a daily basis. I use PHP to query the MySQL database, and loop through the results using the mail() function. Problem: very slow, browser/php times out, etc. Solution: First, I configure sendmail to use "queueonly" as the DeliveryMethod (see sendmail.cf) instead of "background". Then, when my PHP script runs, mailings simply get queued instead of actually delivered. This is a x10 speed increase. My script queues approximately 1,000 mailings per minute (a x10 speed increase). Then, I modified the /etc/rc.d/init.d/sendmail script to process the queue every 5 minutes, instead of the default one hour. This insures that the mailings actually get sent soon after they're queued, and you won't have to wait for important emails to come through. The problem with the above solution used to be this: certain emails generated from my site (welcome emails, password lookup emails, etc) need to be sent IMMEDIATELY, and cannot wait in the queue for 5 minutes. The solution for this: not using the built-in mail() command in PHP. I created my own mail script (by modifying something someone else already did) which opens a socket directly with the mail server. Code is below. // Sends the email directly to the mail server using SMTP. This is done // so sendmail can be setup using the queue method on the server, and // confirmation emails, etc, can be sent immediately to the member. function smtp_mail($to, $from_name, $from_email, $reply_to_email, $subject, $body) { $smtp = fsockopen("your_mail_server_here", 25); if ($smtp == 0) return 0; fputs($smtp,"helo machines_host_and_domain_name_here\r\n"); $line = fgets($smtp, 1024); fputs($smtp,"mail from: $from_email\r\n"); $line = fgets($smtp, 1024); fputs($smtp,"rcpt to: $to\r\n"); $line = fgets($smtp, 1024); fputs($smtp,"data\r\n"); $line = fgets($smtp, 1024); fputs($smtp,"From: $from_name <$from_email>\r\n"); fputs($smtp,"Reply-To: $reply_to_email\r\n"); fputs($smtp,"To: $to\r\n"); fputs($smtp,"Subject: $subject\r\n"); fputs($smtp,"\r\n"); fputs($smtp,"$body\r\n"); fputs($smtp,".\r\n"); $line = fgets($smtp, 1024); fputs($smtp, "QUIT\r\n"); fclose($smtp); return 1; } Function is called as follows: if (!smtp_mail("recipient_email_here", $EMAIL_FROM_NAME, $EMAIL_FROM_EMAIL, $EMAIL_FROM_REPLY_TO, $SIGNUP_VALIDATION_SUBJECT, "Test Body")) { print "error: mail not sent"; } else { print "it worked!"; } Hope this helps others! __________________________________________________ Do You Yahoo!? HotJobs - Search Thousands of New Jobs http://www.hotjobs.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php