On Fri, June 9, 2006 12:59 am, Dave M G wrote:
> I have a database of about 120 users. Each weak I send out a
> newsletter.
> So far as I know, it's been working fine for the last couple of years.
>
> Then recently some users emailed me to let me know that they haven't
> been receiving all the messages. I added extra output to my script to
> echo out the name of each member that got an email sent to them, and I
> can now see that only about 50 of them are getting the email.
>
> The only think that has changed that I can think of is that I've
> upgraded to MySQL 5.0. However, given the type of problem I'm having,
> I
> don't think it's a MySQL problem, it appears much more likely to be a
> problem with my PHP code.
>
> This is the script that sends out the message (edited slightly to take
> out irrelevant bits of newsletter content):
>
> - - - -
> $count = 0;
> while ( $member = mysql_fetch_row($result) )
> {
> set_time_limit(0);
> $subject = "Newsletter subject line";
> $mailcontent = "This message was sent to " . $member[0] . " at
> {$member[1]}
> Blah, blah, blah - newsletter content goes here.";
> mail($member[1], $subject, $mailcontent, $fromaddress);

mail() returns a value to indicate if it failed/succeeded in queueing
up the email.

Check it.

Also, every call to mail() fires up a sendmail process.

This is expensive.

maybe sleep(1) in between calls

or consider switching to SMTP

or sending ONE email with a Bcc...  Though that has a slightly higher
probability of being labeled as spam.

> $count++;
> echo "<p>Newsletter sent to " .  $member[0] . " at " . $member[1] .
> "</p>";
> }
> echo "<p>A total of " .$count ." emails were sent out.</p>\n";
> - - - -
>
> The script actually dies before it gets to the last echo which echoes
> the value of $count. It outputs about 50 lines of "Newsletter sent to
> usersname at [EMAIL PROTECTED]" and then the cursor is stuck in hourglass
> mode and the browser is continually waiting a response. It stays like
> that indefinitely, and the only way it stops is if I go to another
> page
> or shut down the browser.
>
> I have heard that the mail() function does have limitations on how
> many
> emails it sends out. But I thought it took hundreds, somewhere between
> 500 and a thousand, of individual emails before it would die. And I
> also
> thought the set_time_limit(0) function would alleviate the problem of
> timing out.
>
> Where have I gone wrong with this?
>
> Any advice would be greatly appreciated. Thank you for taking the time
> to read this.
>
> --
> Dave M G
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>


-- 
Like Music?
http://l-i-e.com/artists.htm

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to