我正在创建一个 Web 应用程序,我需要在其中每 12/24 小时内触发一个 Web 服务
这是我的存储过程
alter proc TMSautomail
@datefrm datetime,
@dateto datetime
as
begin
select email,UserName from tblUser where
UserName not in(select UserName from userlogin
where date between @datefrm and @dateto)
end
我从这里获得电子邮件ID
[WebMethod]
public void fireautomail()
{
string email = "";
string empname = "";
DateTime datefrm = DateTime.Today;
DateTime dateto = DateTime.Today.AddDays(1);
MailMessage msg = new MailMessage();
string mailfrom = "testemail";
cmd = new SqlCommand("TMSautomail");
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;
con.Open();
cmd.Parameters.AddWithValue("@datefrm",datefrm);
cmd.Parameters.AddWithValue("@dateto", dateto);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
for(int i=0; i<ds.Tables[0].Rows.Count;i++)
{
empname = ds.Tables[0].Rows[i][1].ToString();
email = ds.Tables[0].Rows[i][1].ToString();
}
if (email != "" && email.Length != 0 && email != "NULL")
{
msg.From = new MailAddress(mailfrom);
string subject = "Login Details";
msg.Subject = subject.ToString();
msg.IsBodyHtml = true;
var password = "testpassword";
msg.Body = "<b style='color:red'>Dear " + empname + "</b><br /><br />"
+ "You Forget To Logged In Today<br/>"
+ " You May Miss Important Task's <br/>"
+ " Login To Be Updated <br/>"
+ "Regards<br/>"
+ "Team DES.";
SmtpClient sc = new SmtpClient("smtp.gmail.com");
sc.Port = 587;
sc.Credentials = new NetworkCredential(mailfrom, password.ToString());
sc.EnableSsl = true;
sc.Send(msg);
string edetails = "";
edetails = edetails + " " + "success";
}
}
这是我的 Web 服务 Web 方法,
在这里,我有今天和明天的日期,它将验证并从存储过程中获取数据,但问题是,
我想定期触发此 Web 服务,比如每天下午 6 点和上午 10 点
我需要在此 Web 服务中执行哪些操作?
您可以使用 Windows 任务计划程序定期触发特定任务。转到Windows的"开始"类型->"任务计划程序",然后创建一个新任务并使用您希望此作业执行的操作对其进行配置,例如,这是触发JAVA代码的方式:在某个位置创建一个 .cmd 文件,内容为 "C:\Program Files\Java\jdk1.8.0_25\bin\java.exe" -jar "E:\YourProgram.jar">
现在告诉任务调度程序运行这个.cmd文件,并给出调用这个.cmd的时间段,这反过来又调用你的java程序,该程序具有触发邮件的业务逻辑或其他任何东西。(你的Java程序可以只有一个main((函数(,类似于C#中的main((函数