web-dev-qa-db-ja.com

phpMailer-受信者を削除する方法

このトピックに関するStackOverflowの質問はたくさんありますが、私が抱えている問題を解決できるものは見つかりませんでした。私が書いているスクリプトは、メッセージの内容が異なるさまざまな受信者に複数の電子メールを送信します。

phpMailerオブジェクトを複数回再初期化することでこれを機能させることができますが、できることはオブジェクトを1回作成し、次のフィールドを再割り当てすることです。

$mail->AddAddress($email);
$mail->Subject = $subject;
$mail->IsHTML(false);
$mail->Body = $message;

そうすれば、これらの4行のコードを実行し、必要なだけ何度でもメールを送信できます。 SubjectIsHTML、およびBodyフィールドは簡単に変更できるため、私が抱えている問題はAddAddress関数にあります。

おそらく推測できるように、最初の電子メールを送信した後、将来の電子メールの受信者を変更すると、現在の受信者のリストにスタックされます。

簡単に言えば、_$mailオブジェクトを使用して、古いアドレスを削除するたびにそれらを割り当てることができますか?

アドレスを割り当てるだけのAddAddress以外に使用できる関数はありますか?

46
Joe Majewski

ClearAllRecipients() を使用できます

$mailer->ClearAllRecipients( ); // clear all

95
GDP

受信者にメールを送信する前に常にこれを使用する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

26
user1299518