【问题标题】:Email cron job (asp.net) with Quartz.Net not working使用 Quartz.Net 的电子邮件 cron 作业(asp.net)不起作用
【发布时间】:2013-11-11 11:38:18
【问题描述】:

我正在尝试使用 Quartz.net 发送周期性电子邮件,但没有成功。首先,当我打开一个新项目进行测试时,验证了下面的电子邮件代码部分可以正常工作。当我打开 application.log 时,我可以看到 Log.DebugFormat 消息并且没有捕获到异常,但是没有发送电子邮件。有什么建议吗?谢谢。

public void Execute(IJobExecutionContext context)        
        {
            try
            {
                Log.DebugFormat("{0}****{0}Job {1} fired @ {2} next scheduled for {3}{0}***{0} Fired by {4}", 
                                                                        Environment.NewLine,
                                                                        context.JobDetail.Key,
                                                                        context.FireTimeUtc.Value.ToString("r"), 
                                                                        context.NextFireTimeUtc.Value.ToString("r"),
                                                                        "James");

                Log.DebugFormat("{0}***{0}Hello World!!!{0}***{0}", Environment.NewLine);

                    // Try send email
                    var mail = new Email();
                    mail.IsBodyHtml = true;
                    mail.MailAddresses = "ong1980@hotmail.com";
                    mail.MailSubject = "Test Cron Job";

                    var mailMessage = mail.CreateMailMessage();
                    var Th = new Thread(() => Email.Send(mailMessage, 6, 3000, true));
                    Th.Start();
            }
            catch (Exception ex)
            {
                Log.DebugFormat("{0}***{0}Failed: {1}{0}***{0}", Environment.NewLine, ex.Message);
            }
        }

应用程序配置:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="quartz" type="System.Configuration.NameValueSectionHandler, 
             System, Version=1.0.5000.0,Culture=neutral, 
             PublicKeyToken=b77a5c561934e089"/>
  </configSections>
  <quartz>
    <add key="quartz.scheduler.instanceName" value="ServerScheduler"/>
    <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz"/>
    <add key="quartz.threadPool.threadCount" value="10"/>
    <add key="quartz.threadPool.threadPriority" value="2"/>
    <add key="quartz.jobStore.misfireThreshold" value="60000"/>
    <add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz"/>
  </quartz>

    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    </startup>

  <system.net>
    <mailSettings>
      <smtp deliveryMethod="Network" from="xxx@hotmail.com">
        <network host="smtp.live.com" port="25" userName="xxx@hotmail.com"            password="xxxxxxxxx" />
      </smtp>
    </mailSettings>
  </system.net>

</configuration>

【问题讨论】:

  • 你为什么要开始一个新的邮件发送线程?该作业在专用线程中运行,因此新线程只会添加一种丢失异常信息的方法。异常将发生在另一个线程上,因此不会被您的 catch 块捕获。

标签: asp.net quartz.net


【解决方案1】:

好吧,在 /Quartz.Net/Quartz.Server.exe.config 应该驻留在程序文件(x86)中,我错过了连接字符串和邮件设置。希望它可以对其他人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-26
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多