【问题标题】:send email daily at specific time每天在特定时间发送电子邮件
【发布时间】:2015-09-25 09:19:24
【问题描述】:

我正在尝试在 00:00 自动发送电子邮件; 我使用过 Quartz.net,但存在关于中等可信环境的问题(它是共享主机)。 I've read this on stackoverflow 但不知道该怎么做。

另一个我无法创建 Windows 服务,因为它是共享主机。

还有其他方法吗?

【问题讨论】:

  • 您的共享主机上是否提供任务调度程序?
  • 如果可以,请使用控制台应用程序并让任务调度程序运行它。
  • @GuruStron idk 这是 hostgator 个人计划
  • @user1666620 我不能。我正在使用 cpanel 上传我的应用程序
  • @George,我看到你在这里有两个选择:创建具有无限循环的应用程序,它将使用重复的timer 执行某些操作,或者一个应用程序将执行基本相同但在前台线程中。

标签: c# asp.net-mvc email


【解决方案1】:

这不是一个很好的做法,但你可以做类似的事情(例如我正在使用 MVC 4):

在 Global.asax 中你可以尝试下一步:

public class Global : HttpApplication
{
    void Application_Start(object sender, EventArgs e)
    {
        ...//your current code
        SendEmail();
        SetUpTimer();
    }


    private static System.Threading.Timer _timer;

    private void SetUpTimer()
    {
        TimeSpan timeToGo = DateTime.Now.AddDays(1).Date - DateTime.Now; //timespan for 00:00 tommorrow 

        _timer = new System.Threading.Timer(x => SendEmail(), null, timeToGo, new TimeSpan(1,0,0,0));
    }

    public void SendEmail()
    {
        //check if email was sent today if not send one
    }
}

【讨论】:

  • 这可能有效,也可能无效,因为它取决于要运行的站点/应用程序池。考虑空闲超时、回收设置等。
  • 是的,它不能保证在 00:00 发送电子邮件,但假设 OP 只能选择上传 adp.net 应用程序,我看不到其他选项。
  • 它发送一封电子邮件,然后引发异常:“在 mscorlib.dll 中发生类型为‘System.ArgumentOutOfRangeException’的异常,但未在用户代码中处理附加信息:数字必须为非负数并且小于或等于 Int32.MaxValue 或 -1。”
  • @GuruStron timetogo 越来越{-14:52:20.8256074}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-29
  • 2012-11-27
  • 1970-01-01
  • 2013-12-02
  • 2016-12-28
  • 2015-11-19
相关资源
最近更新 更多