Re: Tiny mass mail (Kinda 0T)

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

 



Thanks m8, I appreciate it.

Cheers!
-Ryan

--- Richard Lynch <ceo@xxxxxxxxx> wrote:

> On Tue, May 2, 2006 6:16 am, Ryan A wrote:
> > The problem is the host is limiting the amount of
> > emails that can go from the site per minute, and
> we
> > need to email all the members (a modest 700 or so)
> a
> > newsletter/update...any suggestions on how to do
> that?
> 
> The main problem with using mail() for mass emails
> is that every call
> to mail() fires up sendmail, and you can easily
> swamp your machine.
> 
> If the host won't let you do more than X per minute,
> and you write a
> loop to stay within that limit
> (http://php.net/sleep) then you should
> probably be okay.
> 
> I wouldn't want to do it for THOUSANDS of emails,
> but you're probably
> going to run into time-delay problems of the mail
> not being relevant
> because of the server-enforced limits before
> anything else.
> 
> I had to do this once for a client, and I'll just
> paste my code here.
> 
> It's crude in many ways, as I don't really know
> ADOdb well enough to
> remember the darn function names, but didn't want to
> write a second
> 'connect' script, so I sort of use ADO to connect,
> and then ignore
> ADO.
> 
> 
> <?php
>   require_once 'lib/common/Init.inc';
>   $init = new Init;
>   $db = $init->getAdoDbConnection();
>   $dbconn = $init->getAdoDbConnection();
>   require 'email_message.php';
>   $message_object = new email_message_class();
>   $query = "select mail_id, subject, plain, html
> from mail ";
>   $query .= " where autosend ";
>   $query .= "   and send_date <= now() ";
>   $query .= "   and sent_date is null ";
>   $result = mysql_query($query) or die("Error in
> query: $query. " .
> mysql_error());
> 
>   $errors = '';
>   $from = '"Example" <nobody@xxxxxxxxxxx>';
>   #$errors .=
> $message_object->SetHeader('Return-Path', $from);
>   $errors .= $message_object->SetHeader('From',
> $from);
>   $errors .= $message_object->SetHeader('Reply-to',
> $from);
> 
>   $query = "select email from user where newsletter
> order by
> reverse(email) ";
>   $victims = mysql_query($query) or die("Error in
> query: $query. " .
> mysql_error());
> 
> 
>   //Policies dictate no more than 50 messages per
> minute, nor 500 per
> hour
>   $start = time();
>   $counter = 0;
>   while (list($mail_id, $subject, $plain, $html) =
> mysql_fetch_row($result)){
>     $errors .=
> $message_object->AddPlainTextPart($plain);
>     $errors .= $message_object->AddHTMLPart($html);
>     $errors .= $message_object->SetHeader('Subject',
> $subject);
>     mysql_data_seek($victims, 0);
>     while (list($victim) =
> mysql_fetch_row($victims)){
>       $errors .= $message_object->SetHeader('To',
> $victim);
>       if (1){
>         $errors .= $message_object->Send();
>       }
>       else{
>         echo "<pre>";
>         ob_start();
>         var_dump($message_object);
>         $data = ob_get_contents();
>         ob_end_clean();
>         echo htmlentities($data);
>         error_log(htmlentities($data));
>         echo "</pre>";
>       }
>       echo $errors;
>       $counter++;
>       //So sleep a minute every 50 messages, or for
> an hour after 500
>       if (($counter % 50) === 0) sleep(60);
>       if (($counter % 500) === 0) sleep(60*60);
>     }
>     $query = "update mail set sent_date = now()
> where mail_id =
> $mail_id";
>     mysql_query($query) or die("$query\n" .
> mysql_error());
>   }
> ?>
> 
> -- 
> 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
> 
> 


------
- The faulty interface lies between the chair and the keyboard.
- Creativity is great, but plagiarism is faster!
- Smile, everyone loves a moron. :-)
-----
Fight back spam! Download the Blue Frog.
http://www.bluesecurity.com/register/s?user=bXVzaWNndTc%3D

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

-- 
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