Re: limiting the amount of emails sent at a time in a batch send

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

 



Here's a PEAR package that handles this:
http://pear.php.net/package/Mail_Queue/

Thank you,
Micah Gersten
onShore Networks
Internal Developer
http://www.onshore.com



Richard Kurth wrote:
> I want to limit these script two send 100 email and then pause for a
> few seconds and then send another 100 emails and repeat this tell it
> has sent all the emails that are dated for today. This script is runs
> by cron so it is running in the background.
>
> How would I do this and is it the best way to do it. I am using swift
> mailer to send the mail.
>
> I think I would use limit 100 in the query but how would I tell it to
> get the next 100.
>
> $today = date("Y-m-d");
> # Cache the Contact that will recive campain messages today
> $query = "SELECT emailmessages. * , contacts.* FROM emailmessages,
> contacts WHERE emailmessages.contact_id = contacts.id  AND
> emailmessages.nextmessagedate = '$today' AND contacts.emailstatus =
> 'Active'";  $DB_Contact_Result = mysql_query($query);
> if (!$DB_Contact_Result) {
>    die('Invalid query: ' . mysql_error());
> }
> while ($this_row = mysql_fetch_array ($DB_Contact_Result)){
>
> $CustomerID=$this_row["id"];
>
> //get the message for the contact
> $query1 = "SELECT * FROM emailcampaign where member_id =
> '$this_row[members_id]' AND campaign_id = '$this_row[emailcampaign]'
> AND day = '$this_row[email_number]'";
>
>     $DB_Mail_Result =  mysql_query($query1);
>     if (!$DB_Mail_Result) {
>    die('Invalid query: ' . mysql_error());
> }
>     $Mail_row = mysql_fetch_array($DB_Mail_Result);
>     //get member stuff
>     $query2 = "SELECT * FROM member where members_id =
> '$this_row[members_id]'";
>
>     $DB_Member_Result =  mysql_query($query2);
>          if (!$DB_Member_Result) {
>    die('Invalid query: ' . mysql_error());
> }
>
> $subject=stripslashes($Mail_row['subject']);
>
> $message=stripslashes($Mail_row['textmessage']);
>
> $hmessage=stripslashes($Mail_row['htmlmessage']);
>
> $swiftPlain = $message;
> $MailFrom1=$this_row['emailaddress'];
> $MailFromName1=$this_row['firstname'];
>
> $full_name=stripslashes($this_row['firstname']) ." " .
> stripslashes($this_row['lastname']);
> //Create the message
> $message = new Swift_Message($subject);
> $message->attach(new Swift_Message_Part($swiftPlain));
> $message->attach(new Swift_Message_Part($swiftHtml, "text/html"));
> $message->setReturnPath($MailAddReplyTo);
> $message->setReplyTo($MailFrom1,$MailFromName1);
> //Now check if Swift actually sends it
> $swift->send($message,
> $this_row['emailaddress'],$MailFrom1,$MailFromName1);
>
> #After we send the email we need to update the database to send the
> next message
> # get the next message number
> $nextday=getnextday(stripslashes($this_row['emailcampaign']),stripslashes($this_row['members_id']),stripslashes($this_row['email_number']));
>
> # get the new dates
> $newdate=getnewdate(stripslashes($this_row['emailstarted']),$nextday);
> #update the emailmessages
> //unsubscribecode
> updateemailmessages($unpass,$nextday,$newdate,stripslashes($this_row['em_id']),stripslashes($this_row['email_number']));
>
>
>
>
> }//end of mail loop
>
>

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