Hi All,

I am very frustrated. I have a simple (at least I think it is) script  
that pulls email addresses, populates a text file and sends it out.  
BUT it is sending the email TWICE! I am not an experienced php/mysql  
person, but I think everything is correct. If some one has an idea of  
why it's sending the message twice, that would be great. Here are the  
stats.

The email list is about 2,600 people. The emails are received not at  
the same time, but about 15 or so minutes apart from each other. This  
makes me think the script is running twice. I've been using this for  
some time and have only recently had this problem. I did a test with  
this script sending to a smaller database - 20 email addresses - and  
had no problems. Could it be the size of the list? Could the browser  
call the script again for some reason part of the way through?

I'm completely at a loss. Any help would be greatly appreciated.

Thanks,

Mark

---------------------------------------------------------
Below is the script
---------------------------------------------------------

<?php
require_once ('../templates/login.php');
require ('../lib/phpmailer/class.phpmailer.php');

$email_errors = 0;
$error_flag = 0;
$error_array = array();
$subject = "Subject Goes Here";

$ic_text = file_get_contents("text_email.txt");

// Send the email

$mail = new PHPMailer();

$mail->From     = "[EMAIL PROTECTED]";
$mail->FromName = "Business Name";

$email_address_query  = "SELECT email_id, email, email_unique_id FROM  
email_list GROUP BY email ORDER BY email_id";
$email_address_result = mysql_query($email_address_query);

while ($email_address_row = mysql_fetch_array($email_address_result,  
MYSQL_ASSOC)) {
$ic_text_final = str_replace("<<EMAIL_ID>>", $email_address_row 
['email_unique_id'], $ic_text);
$ic_text_final = str_replace("<<YEAR>>", date("Y"), $ic_text_final);
$ic_text_final = str_replace("<<EMAIL>>", $email_address_row 
['email'], $ic_text_final);
$mail->Subject = $subject;
$mail->Body    = $ic_text_final;
$mail->AddAddress($email_address_row["email"]);

if(!$mail->Send()) {
   $error_flag = 1;

   $email_errors++;// Add 1 to $email_errors so that it comes up with  
the correct number of emails NOT sent.
   $error_array[] = $email_address_row['email'].' - '. 
$email_address_row['email_id'];
}
// Clear all addresses for next loop.
$mail->ClearAddresses();
// Write the email_id and incremented number back to the tracking table.
$count++;
}

if ($error_flag == 0) {
echo "No Errors.<br><br>\n";
} else {
echo $email_errors."error(s) occured.<br><br>\n";
for ($i=0; $i<count($error_array); $i++) {
   echo $error_array[$i]."<br>\n";
}
}

echo "Email sent.";
exit;
?>

Reply via email to