1

データベースに、送信するメールを含むテーブルがあります。スクリプトは cron ジョブとして定期的に実行され、テーブルからデータを読み取り、SMTP サーバー経由で電子メールをディスパッチします。ここでの作業には PHPMailer を使用しています。スクリプトは、テーブル内のすべての電子メールが送信されるまで、電子メールを送信するためのループを実行します。

問題は、連続して送信されるほとんどの電子メールに共通の件名があることです。したがって、ループが実行されると、どういうわけか、送信されるすべての電子メールに長い「宛先」リストが含まれます。したがって、基本的に、5 つのメール エントリ (宛先アドレスが異なる)の件名と内容が同じ場合、「宛先」フィールドに 5 つのアドレス (各メール エントリの 1 つ) を持つ 1 つのメールのみが送信されます。これにより、すべての人のメールアドレスがリストの他の全員に公開されます。これは望ましくなく、電子メールは、意図された 1 人だけに送信する必要があります。

ここで何が起こっているのかわかりません。助言がありますか?

4

3 に答える 3

2

このようなことをしていますか?

$mailer = new PHPMailer();

while($row = fetch_from_db()) {
   $mailer->AddAddress($row['email']);
   $mailer->send();
}

もしそうなら、あなたはする必要があります

$mailer->ClearAllRecipients()

各メールを送信した後、「新しい」To:リストから始めます。

于 2013-02-27T22:17:58.420 に答える
0

まず、データベースから連絡先を取得します

$contacts = 'GET CONTACTS ARRAY FROM DB'
        if(!empty($contacts)){
            foreach ($contacts as $crt_contact){
               $emails[] = $crt_contact->email ;
            }
        }

2番目に、次を使用して「to」フィールドを作成します

$to = implode(',', array_unique($emails));

$tomail() 関数で送信するには

于 2013-02-27T22:50:48.633 に答える