2

送信に失敗したメールのリストを表示する方法と、それをテストする方法を見つけようとしています。送信したメールの一覧は表示できるのですが、送信に失敗したメールの一覧を取得する方法がわかりません。

mysqldb から取得するために使用しているものは次のとおりです。

            //get the email address list
            $query = "SELECT email FROM users 
                    WHERE id IN (SELECT participant_id FROM roster AS ur WHERE ur.roster_id=".$roster['roster_id'].")";
            $result = mysql_query($query);
            $emailstring2 = "";
            $email2 = $result;
            while ($row = mysql_fetch_object($email2)){
            $emailstring2 .= $row->email. "\n ";
}

メッセージ セクションでは、次の方法で取得します。

   $message .="Successful emails: \n".$emailstring2." \r\n";

どうすればこれを達成できますか?

4

2 に答える 2

5

1 つのキーワードで、送信されなかったものを取得できます。NOT

WHERE id NOT IN 
于 2013-02-12T01:26:40.403 に答える
0

このような単純な方法でPHPからこれを行うことはできません。

郵便局を通過する手紙と考えてください。あなたにできることは、郵便配達員に手紙を渡して、それが目的地に到着することを期待することだけです。郵便配達員は戻ってきて、配達が成功したかどうか、または手紙が実際に受取人によって読まれたかどうかを教えてくれません。PHPのmail()関数(およびその派生物)はTRUEを返し、メッセージが正常に配信されたことではなく、配信の試行で受け入れられたことを示します。(配達は数時間または数日間行われない場合があります。)

結果として、あなたができる最善のことはおおよその配達通知です。これを行うには、いくつかの方法があります。

  • ユーザーがメッセージを開いたときにpingされる電子メールの追跡ピクセルを使用します。ただし、最近のほとんどの電子メールクライアントはデフォルトで「画像を表示しない」ことを考えると、この手法はかなり信頼性が低いと思います。
  • 受信者に固有のバウンスアドレスを使用して各メッセージを送信します。メッセージを配信できない場合は、カスタムアドレスに返されます。その返送メッセージを使用して、元の受信者の電子メールアドレスが適切でないことを示すことができます。これはおそらく最も正確な方法ですが、構成は簡単ではありません。
  • 返品レシートを使用します。ピクセルの追跡と同様に、ほとんどの電子メールクライアントはデフォルトでこれらを送信しないと思うので、これも信頼できない可能性があります。
  • 配信ステータス通知を使用します。これには、それをサポートするサーバーを使用し、それをサポートするサーバーに送信する必要があります。
  • この種の追跡を行うサービスを介してメールを送信します。(例:MailChimpまたはConstant Contact)
于 2013-02-12T18:15:28.333 に答える