现在我们的asp.net网站手动发送发票,是否可以每5分钟自动向客户发送电子邮件?所有发票都使用软件放入SQL Server数据库,放入数据库后,需要发送到附带PDF文件的不同客户邮箱地址。这意味着代码需要每5分钟从数据库中收集新的发票信息并发送。然后创建一个日志文件,包括发送到会计的成功和不成功的发票。
我可以使用任务计划程序或Windows服务吗?
答案 0 :(得分:0)
创建一个名为CronMail.aspx的页面并在load事件中发送电子邮件(我使用一些伪代码解释了这个想法):
void Page_Load(object source, EventArgs e)
{
//1. Check that more than 5 minutes happened before last sent
DateTime lastSent = ...;
if (DateTime.Now().Substract(lastSent).Minutes < 5)
return;
//2. Get your invoices and PDF files
var dataToSent = ...;
//3. Send your invoices
foreach(var item in dataToSent)
{
//4. Save sent date every time to avoid resending in case the whole operation takes more than 5 minutes
saveSentTime();
//5. Finally send your data
}
}
然后,您可以使用Windows任务计划程序每5分钟调用一次网址:http://your_website/CronMail.aspx
以下是一个示例:https://superuser.com/questions/447368/set-windows-scheduler-to-schedule-open-a-website-webpage-or-the-bookmark(使用chrome代替iexplorer)
答案 1 :(得分:0)
Hangfire库是一个完整的后端作业调度程序和后台处理程序,它运行在最新版本的ASP.NET之上。它独立运行(需要一个特殊的IIS应用程序池配置 - “AlwaysRunning”),而不需要外部网页ping或任务调度程序。您可以安排许多作业每分钟运行一次。
我用它取得了很多成功。