我只需要一些关于如何实现这一目标的指导、信息或链接。我不确定我是否可以从 ASP 或某种存储过程中做到这一点。例如,这只是示例,我的表中有 2 个字段:TargetDate 状态
期望用户必须通过目标日期字段中设置的 TargetDate 更新状态字段,无论它是 Complete 还是 Incomplete。如果目标日期已过且状态字段未更新,那么我想向该人发送电子邮件。我只需要关于从哪里开始以及使用什么方法的帮助。提前致谢。
我只需要一些关于如何实现这一目标的指导、信息或链接。我不确定我是否可以从 ASP 或某种存储过程中做到这一点。例如,这只是示例,我的表中有 2 个字段:TargetDate 状态
期望用户必须通过目标日期字段中设置的 TargetDate 更新状态字段,无论它是 Complete 还是 Incomplete。如果目标日期已过且状态字段未更新,那么我想向该人发送电子邮件。我只需要关于从哪里开始以及使用什么方法的帮助。提前致谢。
我不确定 SQL Server 可以做什么(如果它可以做到,我不会感到惊讶)。
根据在发送电子邮件之前从 TargetDate 开始的时间,您可以在 Global.asax Application_Start 方法中编写一个方法来检查该方法并发送电子邮件。这取决于您的应用程序池的重置频率以及用户访问该站点的频率。
这确实具有将逻辑保留在应用程序中的优势,就像将业务逻辑移动到数据库一样(取决于程序的设计方式)。
这是我在类似情况下所做的一个示例:
全球.asax
protected void Application_Start(object sender, EventArgs e)
{
using (var db = new DataContext())
{
//Get the last time e-mails where sent out.
var temp = from s in db.SystemDatas
select s;
if (temp.Count() > 0)
{
var ts = (TimeSpan)(DateTime.Today - temp.First().LastUpdate);
if ((DateTime.Today.DayOfWeek == DayOfWeek.Monday || DateTime.Today.DayOfWeek == DayOfWeek.Tuesday) && ts.Days > 5)
{
//Run President's Report
Thread PresidentReport = new Thread(new ThreadStart(RunPresidentReport));
PresidentReport.Start();
}
}
}
}
private void RunPresidentReport()
{
MailMessage oMsg = new MailMessage();
oMsg.From = new MailAddress("from@at.com");
oMsg.To.Add(new MailAddress("to@at.com"));
oMsg.Subject = "Website - President's Report for " + DateTime.Today.ToString("dd MMM yyyy");
var db = new DataContext();
DataLoadOptions dlo = new DataLoadOptions();
var members = from m in db.Members
where m.status == 1 //1 = active, 2=inactive
orderby m.lastName, m.firstName
select m;
var sb = new StringBuilder();
/** Code to generate body cut for simplicity **/
if (sb.Length > 0)
{
oMsg.Body = sb.ToString();
var emailClient = new SmtpClient();
emailClient.Send(oMsg);
var Data = from s in db.SystemDatas
select s;
if (Data.Count() > 0)
{
Data.First().LastUpdate = DateTime.Today;
db.SubmitChanges(ConflictMode.ContinueOnConflict);
}
}
}
然后将 SMTP 设置放入 web.config:
<configuration>
<system.net>
<mailSettings>
<smtp from="NO_REPLY@at.com">
<network host="localhost"/>
</smtp>
</mailSettings>
</system.net>
</configuration>
您可以使用 SQL Server 执行此操作:
第 1 步:配置组件“数据库邮件 XP”
第 2 步:创建一个存储过程,如:
CREATE PROCEDURE MySP
AS
IF NOT EXISTS(SELECT * FROM myTable WHERE myColumn = someValue)
BEGIN
DECLARE @Result INT
EXEC
@Result = msdb.dbo.sp_send_dbmail
@RECIPIENTS = 'EMAILADDRESS1,EMAILADDRESS2,EMAILADDRESSN',
@SUBJECT = 'Subject',
@BODY = 'Body',
@BODY_FORMAT = 'HTML'
SELECT Result = @Result
END
您需要相应地修改此过程。