-1

ないと仮定します。SQL Server と asp.net を使用してデータベースを介して、データベース内の特定の日付の 2 日前にリマインダー (電子メール) を自動的に送信したいユーザーの数。

助けてください..

user_db次のような列を含むテーブルがあるとします

Auto_id, user_id, email_id, Inspection_Date, IsInterested

したがって、上記の列の値は

1,user1,a@yahoo.com,30-01-2013,Yes
2,user2,b@yahoo.com,01-02-2013,Yes
3,user3,c@yahoo.com,30-01-2013,Yes
4,user4,d@yahoo.com,01-01-2013,Yes

ユーザーが詳細を確認したい場合は、IsInterested列の値に含まれる値が含まれているYes場合、電子メールアラートは指定された 2 日前にInspection_Date自動的に送信されます...

どうやってするの?

4

2 に答える 2

1
List<int> CustomersToEmail = new List<int>();

SqlDataReader rdr = null;
var connection = new SqlConnection("Connection String");
var cmd = new SqlCommand("SELECT * FROM user_db", connection);

rdr = cmd.ExecuteReader();

while (rdr.Read())
{
    DateTime DT = (DateTime)rdr["Inspection_Date"];
    int CustomerID = (int)rdr["user_id"];

    if ((DT - DateTime.Now).TotalDays <= 2)
    {
        CustomersToEmail.Add(CustomerID);
    }

}

EmailAllCustomers(CustomersToEmail);

上記のコードは、検査日から 2 日以内の顧客のリストを作成します。重複を防ぐために、その人にメールが送信されたかどうかのブール列を追加することをお勧めします。のタイマー ループで、スケジュールされた Windows サービスを介してこのメ​​ソッドを呼び出すことができますglobal.asax

于 2013-10-20T06:35:23.447 に答える
0

サブスクリプション システムを実装しようとしているように見えます。php/linux 環境の cronjobs とは異なり、リモート ホストにいる場合、windows でスケジューラーを使用することはできません。ただし、SQL ジョブとデータベース メールに依存することはできます。両方を使用すると問題が解決すると思います。

于 2013-10-20T06:31:56.387 に答える