在发布之前,我确实在这里和那里浏览所有帖子,
但是没有让它发挥作用,
为什么我的mailService始终为null
添加了这是我的Config.grooy
grails {
mail {
host = "smtp.gmail.com"
port = 465
username = "xxxx@gmail.com"
password = "yyyy"
props = ["mail.smtp.auth":"true",
"mail.smtp.socketFactory.port":"465",
"mail.smtp.socketFactory.class":"javax.net.ssl.SSLSocketFactory",
"mail.smtp.socketFactory.fallback":"true"]
}
}
这是我的班级,它将发送演示邮件
class EmailHelper {
def mailService;
def sendMailTO() {
println "mail service:"+mailService
mailService.sendMail {
to 'xxxx@gmail.com'
from 'xxxx@gmail.com'
subject "Test"
body "Test";
}
}
}
这就是我从控制器调用的方式
EmailHelper emailHelper = new EmailHelper();
emailHelper.sendMailTO();
我在这里遗漏了什么吗?
答案 0 :(得分:2)
你不必须为此创建一个bean - 这太过分了。因为你从一个可以使用依赖注入的控制器调用帮助器,所以将它注入并传递给帮助器:
class MyController {
def mailService
def someAction() {
EmailHelper emailHelper = new EmailHelper()
emailHelper.mailService = mailService
emailHelper.sendMailTO()
...
}
}
答案 1 :(得分:1)
MailService
需要通过依赖注入注入您的EmailHelper
类。您声明的方式mailService
仅适用于服务和控制器等Grails工件。这意味着如果您的EmailHelper
类在src / groovy中,它将无法工作。相反,将您的类创建为EmailHelperService
(grails create-service EmailHelper
)之类的服务,并在那里进行依赖注入。
答案 2 :(得分:0)
当您在src/groovy
下使用帮助程序类时,您必须注入mailService
的依赖项,然后将帮助程序注入控制器而不是实例化它。
<强>更新强>
我会使用以下方法获得一个通用助手,它不仅仅是发送邮件。
//resources.groovy
import mypackage.MyHelper
beans={
myHelper(MyHelper){
mailService = ref('mailService')
}
}
//Controller
Class MyController{
def myHelper
def myAction(){...}
}