【发布时间】:2019-12-03 05:47:06
【问题描述】:
我正在开发一个 winforms/数据库软件。这是一个办公室里的每个人都可以使用的软件,使用相同的数据库。有一列包含任务的“日期时间”。这个任务还有一个延迟时间,我想做的是,如果今天的日期大于datetime + delaytime,程序应该触发sendMail()函数。如何触发这个功能,它应该是用户独立的?
void sendMail(string taskid, string subject, string message)
{
try
{
SqlCommand komut = new SqlCommand();
komut.CommandText = "select planner from db_owner.tbl_SpecificTask where TASKID = @taskid";
komut.Parameters.AddWithValue("@taskid", TASKID);
komut.Connection = Db.Db;
komut.CommandType = CommandType.Text;
SqlDataReader dr = komut.ExecuteReader();
while (dr.Read())
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient();
mail.To.Add(dr[0].ToString());
//mail.To.Add(dr[1].ToString());
mail.From = new MailAddress("task.notification@tr.companyA.com");
mail.Subject = subject;
mail.IsBodyHtml = true;
mail.Body = message;
SmtpServer.Host = "hiddeninfo";
SmtpServer.Port = hiddeninfo;
SmtpServer.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
try
{
SmtpServer.Send(mail);
}
catch (Exception ex)
{
Debug.WriteLine("Exception Message: " + ex.Message);
if (ex.InnerException != null)
Debug.WriteLine("Exception Inner: " + ex.InnerException);
}
}
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex);
}
finally
{
Db.Close();
}
}
【问题讨论】:
-
你有没有想过运行一个服务来检查数据库并在条件为真时运行任务。
-
@MarcusLai 不,我想不通。我不知道应该从哪里开始运行该服务
-
也许这会有所帮助...stackoverflow.com/questions/23440749/…
-
您想从特定工作站发送电子邮件,还是只是一封电子邮件,通知是否发生了某事并且可以由所有人发送?
-
@AthanasiosKataras 如果我给出的条件发生,程序应该向存储在数据库中的所有人发送电子邮件..