Re: mail() function dying half way through.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 name@xxxxxxxxx" 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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux