Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 每天在特定时间向管理员发送电子邮件/当库存水平较低时通过电子邮件通知管理员_C#_Asp.net - Fatal编程技术网

C# 每天在特定时间向管理员发送电子邮件/当库存水平较低时通过电子邮件通知管理员

C# 每天在特定时间向管理员发送电子邮件/当库存水平较低时通过电子邮件通知管理员,c#,asp.net,C#,Asp.net,是否有人知道我将如何编写此代码: 每天在特定时间向管理员/经理发送电子邮件,包括数据库库存表中的一个表-该表只有四份库存,因此他们将被告知其库存水平以及是否需要重新订购 否则 如果这四个库存水平中有一个较低,则会向经理/管理员发送电子邮件,通知他们认证材料/库存已达到最低水平,并重新订购 我有发送电子邮件的代码: protected void Button1_Click1(object sender, EventArgs e) { MailMessage mail = new MailMessa

是否有人知道我将如何编写此代码:

每天在特定时间向管理员/经理发送电子邮件,包括数据库库存表中的一个表-该表只有四份库存,因此他们将被告知其库存水平以及是否需要重新订购

否则

如果这四个库存水平中有一个较低,则会向经理/管理员发送电子邮件,通知他们认证材料/库存已达到最低水平,并重新订购

我有发送电子邮件的代码:

protected void Button1_Click1(object sender, EventArgs e)
{
MailMessage mail = new MailMessage(from.Text, to.Text, subject.Text, body.Text);
SmtpClient Client = new SmtpClient(smtp.Text);
Client.Port = 587;
Client.Credentials = new System.Net.NetworkCredential(username.Text, password.Text);
Client.EnableSsl = true;
Client.Send(mail);
Response.Write("<script LANGUAGE='JavaScript' >alert('Mail Sent')</script>");
}
欢迎任何帮助


谢谢大家!

您需要一个调度器,这样您就可以安排每天的任务来检查库存水平,并在需要时发送电子邮件。如果希望将所有内容都保存在asp.net应用程序中,可以使用hangfire实现这一点。Hangfire是一个调度程序。检查

代码如下所示

RecurringJob.AddOrUpdate(
() => {
//TODO: Check your Stock Table DB
var from = "noreply@<yourcompany>.com"
var to = "admin@<yourcompny>.com"
var subject = "Low stock"
var body = "The following items are low in stock : "
// TODO: append items to body variable
MailMessage mail = new MailMessage(from, to, subject, body);

SmtpClient Client = new SmtpClient(smtp.Text);
Client.Port = 587;
Client.Credentials = new System.Net.NetworkCredential(username.Text, password.Text);
Client.EnableSsl = true;
Client.Send(mail);},
    Cron.Daily);
});

使用Windows服务监视数据、小时和数据库

    private void mainTimer_Tick(object sender, EventArgs e)
    {
        try
        {
            if (ConfigsHTM["exechour"] != null)
            {
                if (DateTime.Now.ToString("HH:mm:ss") == ConfigsHTM["exechour"].ToString())
                {
                    ClassProcessing clsProc = new ClassProcessing();
                    clsProc.StartDate = DateTime.Now.AddDays(-1);
                    clsProc.EndDate = DateTime.Now.AddDays(-1);
                    clsProc.ProcessAll();

                    if (StatusHTM.Count > 0)
                        StatusHTM.Clear();

                    StatusHTM.Add("locationstatus","Todas as Unidades");
                    StatusHTM.Add("typestatus","Agendado");

                    StatusHTM.Add("exechourstatus", DateTime.Now.ToString("F"));

                    if (clsProc.ReprocessingDone)
                        StatusHTM.Add("statusstatus","OK");
                    else
                        StatusHTM.Add("statusstatus", "Falhou");

                    ClassStatus clsStt = new ClassStatus();
                    clsStt.StatusHT = StatusHTM;
                    clsStt.SaveStatus();
                    GetStatus();
                }
            }
        }
        catch (Exception ex)
        {
            ClassLog clsLog = new ClassLog();
            clsLog.EventData = "Falha ao Iniciar a Execução do  Aplicativo";
            clsLog.ErrorLog();
            clsLog.EventData = ex.ToString();
            clsLog.ErrorLog();
        }
    }

您可以检查Quartz.NET以获取计划服务任务。请参阅搜索“调度ASP.NET代码来运行”之类的东西,您只需要一种自动程序,它可以按预定的时间间隔,即在特定的预定义的时间间隔运行,并检查是否需要发送电子邮件,如果是,发送一个。有很多不同的方法可以实现这一点,你可以很容易地进行研究。非常感谢!这个代码会去哪里?在显示表格的库存表单的按钮或页面加载下。您可以在Global.asax受保护的无效应用程序上添加此代码。\u Startobject sender,EventArgs e{//add code here}非常感谢!您知道如何使用循环来检查数据库中库存表中的4种物料是否达到最低级别,我会将其设置为200?非常感谢您您应该标记此问题和答案,并创建一个新问题