2016-04-15 65 views
0

我正在使用Grails 3.0.12,我正在使用Quartz来执行一项工作,我现在要做的就是每次发送一封电子邮件(在这种情况下,每5个秒)。我的服务文件夹中有电子邮件服务。这是我的代码:Grails,ORM,Quartz,Jobs,

class EnviaCorreosJob{ 
NotifierService notificar 
Integer diasParaCorreo = 30 

static triggers = 
{ 
    cron name: 'myTrigger', cronExpression: "*/5 * * * * ?" 
} 
def group = "MyGroup" 
def description = "Example job with Cron Trigger" 
def fechaHoy = new Date() 

def execute() 
{ 
    println "------------------ Running every 5 seconds -------------------" 

    def queryAgenda = Agenda.where 
    { 
     inicio_cita <= (fechaHoy + diasParaCorreo) 
    } 
    def listaAgenda = queryAgenda.list() 
    println "----------------------Dates list : " + listaAgenda 

    log.info "listaAgenda: " + listaAgenda 
    log.info "listaAgendaTamaño: " + listaAgenda.size() 

    listaAgenda.each 
    { 
     agenda -> 

     println "it's inside" 

     mailService.sendMail 
     { 
      to "[email protected]" 
      subject "hello" 
      body "hello" 
     } 
    } 
} 
} 

我试图让一个Service类的实例调用mailService.sendMail但没有工作。

非常感谢您的帮助。 :)

回答

1

它看起来像你正在尝试使用邮件插件在你的工作,但你没有注入邮件服务到你的工作。

地址:

def mailService 

到您的类,它会注入和可用。更多关于注射服务可以在这里找到https://grails.github.io/grails-doc/latest/guide/single.html#dependencyInjectionServices

更多信息有关配置和使用邮件插件是在这里 - https://grails.org/plugins.html#plugin/mail

+0

我已经添加了高清** ** MailService的,但现在这是错误 组织。 quartz.JobExecutionException:java.lang.NullPointerException:无法在null对象上调用方法sendMail() – R2R

+0

您实际上是否在'build.gradle'中定义了邮件插件?你能举一个完整的例子吗? – erichelgeson

+0

是的,但是我的错误,你是对的,我移动了一些代码和** def mailService **是我应该先放的正确的东西。 非常感谢。 :) – R2R