0

phpmailer を使用して大量のメールを送信するのに問題がありましたが、単一のメールでは問題ありません。

ここに私のコードがあります:

$result = mysql_query("select * from $to",$conn) or die("list 
            selected  ($to) does not exist ".mysql_error());

while ($row = mysql_fetch_array($result))
{           
    $email[] = $row['email'];           
    $student[] = $row['name'];
}

foreach ($email as $val => $uemail) {
    $email = $uemail;
    $students= $student[$val] ;

    require("class.phpmailer.php");
        $mail = new PHPMailer(true); 

    try {
           $mail->AddReplyTo('info@bratim.com', 'My Name');
           $mail->AddAddress("$email", "$student");
           $mail->SetFrom('info@me.com', 'MyName');
           $mail->AddReplyTo('info@me.com', 'My nameg');
           $mail->Subject = "$sub";

           $mail->MsgHTML("Dear $student<br> $msg <br>
             <img src=\"$path\"> <p>

             $host_upper
            ______________________________________________________
            THIS IS AN AUTOMATED RESPONSE. 
            ***DO NOT RESPOND TO THIS EMAIL****

             ");
            $mail->AddAttachment("$path2");      // attachment

          $mail->Send();
          echo "Message Sent OK to $email  </p>\n";
    } catch (phpmailerException $e) {
        echo $e->errorMessage(); //Pretty error messages from PHPMailer
    } catch (Exception $e) {
        echo $e->getMessage(); //Boring error messages from anything else!
    } 
}

任意のヘルプ、提案をいただければ幸いです。

4

2 に答える 2

1

while ループ内でメールを送信できます。

<?php
require_once("class.phpmailer.php");

$result = mysql_query('SELECT `email`, `student`, `data1` FROM `students` ORDER BY `email` ASC;');

while ( $row = mysql_fetch_assoc($result) )
{
    $current_mail = new PHPMailer(true);

    $current_mail->AddReplyTo('info@bratim.com', 'My Name');
    // ....
    $current_mail->Send();
    unset($current_mail);
}
?>
于 2012-07-04T10:03:44.923 に答える
0

foreach内に割り当てますが、次に配列$student[$val]をphpmailerオブジェクトに割り当てます。$students$student

$mail->AddAddress("$email", "$student");

あるべきではない

 $mail->AddAddress("$email", "$students");

それ以外は、送信する必要のある電子メールごとに新しいメーラーオブジェクトをインスタンス化するのは悪い習慣です。AddAddress過負荷を避けるために、他のすべての変数を外に置いて、変更される変数をクリアすることを忘れないでください。のようにAddAddress、このように:

require_once("class.phpmailer.php");
$result = mysql_query("select * from $to",$conn) or die("list selected  ($to) does not exist ".mysql_error());

          while ($row = mysql_fetch_array($result))
    {

        $email[] = $row['email'];

        $student[] = $row['name'];
    }

$mail = new PHPMailer(true); 
try {
            $mail->AddReplyTo('info@bratim.com', 'My Name');
            $mail->SetFrom('info@me.com', 'MyName');
            $mail->AddReplyTo('info@me.com', 'My nameg');
            $mail->Subject = "$sub";
            $mail->AddAttachment("$path2"); 
            foreach ($email as $val => $uemail) {
                $email = $uemail;
                $students= $student[$val] ;

                $mail->AddAddress("$email", "$students");
                $mail->MsgHTML("Dear $student<br> $msg <br>
                <img src=\"$path\"> <p>

             $host_upper
            ______________________________________________________
            THIS IS AN AUTOMATED RESPONSE. 
            ***DO NOT RESPOND TO THIS EMAIL****

             ");
              $mail->Send();
              $mail->ClearAddresses();
            echo "Message Sent OK to $email  </p>\n";
              }
            } catch (phpmailerException $e) {
        echo $e->errorMessage(); //Pretty error messages from PHPMailer
           } catch (Exception $e) {
          echo $e->getMessage(); //Boring error messages from anything else!
             } 
            }
于 2012-07-04T10:08:08.067 に答える