Hi Girish,
I'm afraid I'm at a loss. I don't see what you are talking about. The
ClearAddresses IS inside the while loop. See below:
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++;
}
I don't see in your example where you made a change, either. Sorry if
I missed it. Any ideas?
Thanks,
Mark
-----------------------------
On Nov 16, 2006, at 8:20 PM, girish umanandan wrote:
> HI,
>
> Thats beacuse of your code. See the while loop in your code
>
>
>
> 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'];
> }
>
>
> You are sending the mail in while loop and clearing the addresses
> outside the while loop. It will be cleared only after looping the
> while loop. At that it may send many mails.
>
> To avoid it,
> add the line $mail->ClearAddresses(); inside the if statement in
> while loop
>
> 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'];
> }
>
>
>
> By
> Girish.
>
> Mark Wheeler <[EMAIL PROTECTED]>
> wrote: 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;
> ?>
>
>
>
>
>
> ---------------------------------
> Sponsored Link
>
> Mortgage rates as low as 4.625% - $150,000 loan for $579 a
> month. Intro-*Terms
>
> [Non-text portions of this message have been removed]
>
>
>
>
> The php_mysql group is dedicated to learn more about the PHP/MySQL
> web database possibilities through group learning.
> Yahoo! Groups Links
>
>
>
>