This is a discussion on Writing my own mass-email script in PHP within the PHP Language forums, part of the PHP Programming Forums category; Hi, all. Sorry, first off, for the kidna weird selection of crossposted groups, but this question touches on aspects of ...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
Hi, all. Sorry, first off, for the kidna weird selection of crossposted
groups, but this question touches on aspects of discussion in each of the groups. So I have a group of around 500 email addresses to which I would like to send a mass email occasionally. The group will never be much larger than 500 email addresses and will occasionally be about half that size. I have written a simple HTML interface and PHP backend to process the mail. HTML form wiht "subject" and "message body" fields. PHP then gets all this, gets a list of addresses from a database, and sends the email out. What is a good way to proceed with this? I would like to Bcc: the names on the list so that the "To:" is "Mail List<maillist@mydomain.edu>" (which is a dummy email address). I tried using the PHP mail() function and it *seemed* to work, almost. That is to say, I had added all the names to a long list of Bcc: headers, and put the extra Bcc: headers in the extra headers argument to the PHP mail() function. This seemed to work, in that it seemed like everyone got the email; however, the mail() function came back with a failure error. I thought about it a bit and researched a little and found that maybe a really long Bcc: list is not the best idea, for spam reasons (my message is more likely to be marked as spam) and for other similar reasons. So I was considering looping through the 500 email addresses and doing a separate mail() for each, but putting each email address in the To: field. This sounds like a lot of overhead, though, and I'm afraid of this thing timing out or crapping out or Something Bad(TM) happening. I am currently using Sendmail, Linux (Red Hat 9), Apache 1.3.x, and PHP 4.3.8. I am not crazy about the idea of installing EZMLM only because I would need to install Qmail and, although that may be a good idea in the long run, it looks like a bitch (if the length of this page -- http://www.lifewithqmail.org/lwq.html -- is any indication!) I am not really very experienced with MTA administration! So, any suggestions? Any comments? Anything? Thanks!! -- Jeffrey D. Silverman | jeffreyPANTS@jhu.edu Website | http://www.newtnotes.com Drop "PANTS" to reply by email |
|
|||
|
"Jeffrey Silverman" <jeffrey@pantsjhu.edu> wrote in message news:pan.2004.09.27.16.22.47.589264@pantsjhu.edu.. . > Hi, all. Sorry, first off, for the kidna weird selection of crossposted > groups, but this question touches on aspects of discussion in each of the > groups. > > So I have a group of around 500 email addresses to which I would like to > send a mass email occasionally. The group will never be much larger than > 500 email addresses and will occasionally be about half that size. > > I have written a simple HTML interface and PHP backend to process the > mail. HTML form wiht "subject" and "message body" fields. PHP then gets > all this, gets a list of addresses from a database, and sends the email > out. > > What is a good way to proceed with this? I've got something like this that sends all the mails out individually according to recipients specified in a MySQL table. I've sent to just over 1500 people and it worked fine. It also has an online thing so that you can edit the actual message that goes out. If you want, e-mail me offline and I'll zip up the relevant files and send them to you. I can't promise that the code will be very elegant but you're welcome to it. Andy |
|
|||
|
Jeffrey Silverman wrote:
> I tried using the PHP mail() function and it *seemed* to work, almost. > That is to say, I had added all the names to a long list of Bcc: headers, > and put the extra Bcc: headers in the extra headers argument to the PHP > mail() function. This seemed to work, in that it seemed like everyone got > the email; however, the mail() function came back with a failure error. You could select a smaller number of adresses to bcc: and then loop all your emails in groups, this would lessen the send load on your mailserver, and at the same time allow you to send the same message to all the users in your list. //Aho |
|
|||
|
Hello,
On 09/27/2004 01:22 PM, Jeffrey Silverman wrote: > I tried using the PHP mail() function and it *seemed* to work, almost. > That is to say, I had added all the names to a long list of Bcc: headers, > and put the extra Bcc: headers in the extra headers argument to the PHP > mail() function. This seemed to work, in that it seemed like everyone got > the email; however, the mail() function came back with a failure error. > > I thought about it a bit and researched a little and found that maybe a > really long Bcc: list is not the best idea, for spam reasons (my > message is more likely to be marked as spam) and for other similar > reasons. So I was considering looping through the 500 email addresses and > doing a separate mail() for each, but putting each email address in the > To: field. This sounds like a lot of overhead, though, and I'm afraid of > this thing timing out or crapping out or Something Bad(TM) happening. > > I am currently using Sendmail, Linux (Red Hat 9), Apache 1.3.x, and PHP > 4.3.8. You are right. Putting all recipients in Bcc: is not a good idea because like you noted, some mailbox providers like Hotmail will tag the messages as junk when the recipient address does not come in a visible header (To: or Ccc:). Some ISP may also limit the number of recipients per message that is queued. Since you use sendmail and your messages are not that urgent, my suggestion is to configure it to queue all the messages and deliver them later when the queue is processed next time. This way sendmail will not hold your PHP script waiting for each delivery. If you are not aware how to do that, you may want to try this class for composing and sending e-mail messages that comes with a subclass specialized in deliveryng via sendmail that provides an option that lets you tell to defer the delivery of your messages. If you are not personalizing the messages (which I strongly advise for efficiency reasons) you may also want to tell the class to cache your message bodies so it does not waste time rebuilding the message body for each recipient. You can still personalize the message headers like the To: header as you need. http://www.phpclasses.org/mimemessage -- Regards, Manuel Lemos PHP Classes - Free ready to use OOP components written in PHP http://www.phpclasses.org/ PHP Reviews - Reviews of PHP books and other products http://www.phpclasses.org/reviews/ Metastorage - Data object relational mapping layer generator http://www.meta-language.net/metastorage.html |
|
|||
|
On Mon, 27 Sep 2004 14:35:23 -0300, Manuel Lemos wrote:
> http://www.phpclasses.org/mimemessage Thanks! This looks promising... -- Jeffrey D. Silverman | jeffreyPANTS@jhu.edu Website | http://www.newtnotes.com Drop "PANTS" to reply by email |
|
|||
|
Jeffrey Silverman wrote:
> So I have a group of around 500 email addresses to which I would like to > send a mass email occasionally. The group will never be much larger than > 500 email addresses and will occasionally be about half that size. This was the subject of a question I ask about a membership list about a year or two ago. If you will do a google groups search for 'membership list' without the quotes as a subject, you should find 6 or 8 messages that answer your question. |
|
|||
|
On Mon, 27 Sep 2004 12:22:48 -0400, Jeffrey Silverman wrote:
> Hi, all. Sorry, first off, for the kidna weird selection of crossposted > groups, but this question touches on aspects of discussion in each of the > groups. > > So I have a group of around 500 email addresses to which I would like to > send a mass email occasionally. The group will never be much larger than > 500 email addresses and will occasionally be about half that size. > >> snip <<< Hi, I have worked on something like that, I ended up installing bulk_mailer: ftp://cs.utk.edu/pub/moore/bulk_mailer/ This is a C program which will do quite smart mass-mailing, I have used it once or twice for the about 5000 subscribers of my newsletter, it worked without problems. Since I do everything in PHP as well, and needed to write a web-based frontend for this newsletter, I simply used the system function from PHP to use bulk_mailer. It looked something like that: system('/bin/cat '.PATH_MESSAGE.' | '.PATH_BULK_MAILER.' '.$from.' '.PATH_RECIPIENTS.' > '.$path_log.' 2>/dev/null'); Before this, I first wrote the newsletter to a file (PATH_MESSAGE), and the recipients to a file (PATH_RECIPIENTS). As you can see in the command above, I pipe the contents of the message (PATH_MESSAGE) into bulk_mailer (PATH_BULK_MAILER), then set the sender ($from) and recipient list (PATH_RECIPIENTS) arguments for bulkmailer. Finally, I redirected the output into a log ($path_log) and ditched any error output. Of course you will have to write some error checks and elsewhat before using this, but it could give you a hint. The good news is, bulk_mailer works with sendmail, the bad news is, bulk_mailer does not seem to work with qmail :( DrTebi |