Global.asax计时器适用于IIS,但不适用于Azure

时间:2013-12-07 20:37:11

标签: email iis azure scheduled-tasks global-asax

Global.asax中的代码适用于IIS,但是当我将应用程序部署到Azure时,它无效。

   protected void Application_Start(object sender, EventArgs e)
   {
        System.Timers.Timer timer = new System.Timers.Timer();
        timer.Interval = 60000;       
        timer.AutoReset = true;
        timer.Elapsed += new ElapsedEventHandler(NewCandidates);
        timer.Enabled = true; 
    }

    public void NewCandidates(object source, System.Timers.ElapsedEventArgs e)
    {
        SendEmail.MailSender mail = new MailSender();
        mail.EmailSender();
    }

全部因为Azure不支持电子邮件触发器。我在上面创建了Web应用程序以发送smtp电子邮件并作为云服务发布到Azure。每个星期五都应该发送一封电子邮件,其中包含来自候选人表格的本周记录。安排电子邮件的任何事情都有帮助,但我想我不能去SendGrid。

1 个答案:

答案 0 :(得分:0)

您应该考虑将代码移出以利用Azure Scheduler(http://www.windowsazure.com/en-us/services/scheduler/)。与使用上述方法相比,这将是一种更可靠的调度服务。

可靠的邮件传递实际上只能通过使用SendGrid - 其他任何东西都可能被一个黑名单或其他黑名单反弹。您可以使用SendGrid免费发送每月最多25,000封电子邮件(http://sendgrid.com/windowsazure.html)。

如果您无法使用SendGrid,那么您可以使用Azure之外的SMTP中继(例如,在您自己的网络上),您可以退回邮件,但即使这可能不起作用,除非您修改邮件以删除原始IP / hostname。