このトピックに関するStackOverflowの質問はたくさんありますが、私が抱えている問題を解決できるものは見つかりませんでした。私が書いているスクリプトは、メッセージの内容が異なるさまざまな受信者に複数の電子メールを送信します。
phpMailer
オブジェクトを複数回再初期化することでこれを機能させることができますが、できることはオブジェクトを1回作成し、次のフィールドを再割り当てすることです。
$mail->AddAddress($email);
$mail->Subject = $subject;
$mail->IsHTML(false);
$mail->Body = $message;
そうすれば、これらの4行のコードを実行し、必要なだけ何度でもメールを送信できます。 Subject
、IsHTML
、およびBody
フィールドは簡単に変更できるため、私が抱えている問題はAddAddress
関数にあります。
おそらく推測できるように、最初の電子メールを送信した後、将来の電子メールの受信者を変更すると、現在の受信者のリストにスタックされます。
簡単に言えば、_$mail
オブジェクトを使用して、古いアドレスを削除するたびにそれらを割り当てることができますか?
アドレスを割り当てるだけのAddAddress
以外に使用できる関数はありますか?
ClearAllRecipients() を使用できます
$mailer->ClearAllRecipients( ); // clear all
受信者にメールを送信する前に常にこれを使用するim:
// clear addresses of all types
$mail->ClearAddresses(); // each AddAddress add to list
$mail->ClearCCs();
$mail->ClearBCCs();
次に、これを行うだけです:(CCまたはBCCを使用せず、$ toaddressは単なる受信者の配列です)
foreach($toaddress as $key=>$val) { $mail->AddAddress( $val ); }
pHPMailerを使用しているim 5.2