Re: mailing list using mail()

From: Date: Wed, 10 Apr 2002 19:27:14 +0000
Subject: Re: mailing list using mail()
Groups: php.general 
Request: Send a blank email to php-general+get-92441@lists.php.net to get a copy of this message
the combination of PHP and mysql and the ease of use of the mail() function obviously leads me to believe that it *should* be a cinch to use php to send customised messages to all my users , of whom I have details in a mysql table by simply running a "select * from table" and then using a while loop to run through every row and sending an e_mail to $user_in_table. You don't want to use the mail() function. It will take forever to send 17,000 messages since PHP will wait for each message to be delivered before sending the next one. With DNS lookups, slow remote servers, etc., it can take a long time to send each message. A better solution on *nix machines with sendmail is to write the messages into the mail queue and use "sendmail -q" to send them out. (If sendmail is running as a daemon, it's probably already configured with "-bd -q15m" or a similar set of command line switches. Otherwise you'll need a line in /etc/crontab that runs "sendmail -q" as root throughout the day.) Here's a sample that writes each message into the queue assuming the appropriate values for each addressee are stored in $from, $to, $subject, and $message. You'd obviously embed this is an iteration loop. # you probably want a sender to handle bounces $sender="admin@yourdomain.com"; ### LOOP OVER THESE # complete sendmail command; note that this must be in the iteration # loop to fill in $sender and $name for each recipient $sendmail="/usr/sbin/sendmail -odq -t -i -f$sender '$name'"; # construct the header $headers= "Sender: $sender From: $from To: $to Subject: $subject "; # mail the message (write to sendmail socket; queue for delivery) $sm=popen($sendmail,"w"); fputs($sm,$headers); fputs($sm,$message); pclose($sm); ### END OF LOOP ### I have a question with regards to this. From reading the docs on mail() it seems that the mail function just opens a socket to sendmail on your local system anyway. So how does forcing the same sort of action help in this case. I'm trying to get a firm grasp around this whole email/sendmail/sockets thing.
-Jim _________________________________________________________________ Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp.

« previous php.general (#92441) next »