2014-07-16 116 views
0

我想從我的應用程序發送一封電子郵件,它工作正常,但發送電子郵件需要超過30秒,直到整個瀏覽器卡住爲止。異步發送電子郵件

我該如何防止這種情況。有沒有辦法異步發送電子郵件?

我的電子郵件地址發送代碼如下(寫在一個服務類)

def sendEmilService(User user) { 
    mailService.sendMail { 
     to user.email 
     from "[email protected]" 
     subject "Welcome " 
     body(view:"/email/emailsending", 
     model: [ inss: user.name]) 
    } 
} 
+2

這個插件需要所有的猜測中如何做到這一點:http://grails.org/插件/異步郵件對初學者來說非常棒,直到你的需求變得更加複雜。 –

+0

請不要在每個問題的末尾都加上「初學者」。 – lukelazarovic

回答

4

您可以使用

def sendSomeMail(User user) { 

    mailService.sendMail { 
     async true // send mail async 
     to user.email 
     from "[email protected]" 
     subject "Welcome " 
     body(view:"/email/emailsending", 
     model: [ inss: user.name]) 
    } 
} 
3

從Grails的Mail插件文件:

異步

該插件可以s (郵件在不同的線程上發送,並且sendMail消息立即返回,而不是等待郵件實際發送)。爲了異步發送「異步真」必須在傳遞給sendmail的方法關閉,如:

sendMail { 
    async true 
    to "[email protected]" 
    subject "Hello John" 
    html g.render(template:"myMailTemplate") 
}