Email grails发送电子邮件:mailService始终为空
在这里发布之前,我确实浏览了这里和那里的所有帖子,Email grails发送电子邮件:mailService始终为空,email,grails,groovy,grails-plugin,Email,Grails,Groovy,Grails Plugin,在这里发布之前,我确实浏览了这里和那里的所有帖子, 但是没有让它发挥作用, 为什么我的邮件服务总是空的 添加这是我的Config.grooy grails { mail { host = "smtp.gmail.com" port = 465 username = "xxxx@gmail.com" password = "yyyy" props = ["mail.smtp.auth":"true",
但是没有让它发挥作用,
为什么我的邮件服务总是空的 添加这是我的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();
我在这里遗漏了什么吗?
MailService
需要通过依赖项注入注入到您的EmailHelper
类中。按照您声明的方式,mailService
将只在服务和控制器等Grails工件中工作。这意味着如果您的EmailHelper
类位于src/groovy中,它将不起作用。相反,将类创建为服务,如EmailHelperService
(grails创建服务EmailHelper
)然后在那里进行依赖项注入。当您在src/groovy
下使用助手类时,您必须注入mailService
的依赖项,然后将助手注入控制器,而不是实例化它
更新我将使用下面的方法作为通用助手,它不仅仅是发送邮件
//resources.groovy
import mypackage.MyHelper
beans={
myHelper(MyHelper){
mailService = ref('mailService')
}
}
//Controller
Class MyController{
def myHelper
def myAction(){...}
}
你不必仅仅为此创建一个bean——这太过分了。由于您是从可以使用依赖项注入的控制器调用帮助器,因此将其注入该控制器并将其传递给帮助器:
class MyController {
def mailService
def someAction() {
EmailHelper emailHelper = new EmailHelper()
emailHelper.mailService = mailService
emailHelper.sendMailTO()
...
}
}
在这里更有意义。我同意,我会选择一个普通的助手(不仅仅是发送邮件)作为bean,而不是一个只需要执行一个行为的email助手作为bean。我并不真正理解否决票。这个答案应该简单地解释他/她的方法不起作用的原因,以及使其起作用的快速方法。我认为这是因为没有考虑更简单的方法。我也是这样我在伯特的回答后纠正了它。