56

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

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

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

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

ご想像のとおり、最初の電子メールを送信した後、将来の電子メールの受信者を変更すると、現在の受信者リストにそれらがスタックされます。

簡単に言うと、オブジェクトに関連付けられた電子メール アドレスを削除し$mailて、古いアドレスを削除しながら毎回割り当てることができるようにするにはどうすればよいでしょうか?

AddAddressアドレスを割り当てるだけで使用できる別の機能はありますか?

4

2 に答える 2

117

clearAllRecipients( )を使用できます

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

于 2012-06-08T16:20:48.733 に答える
32

受信者に電子メールを送信する前に、常にこれを使用しています。

// 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 5.2を使用しています

于 2012-06-08T16:20:16.167 に答える