我想使用模板发送电子邮件。我想要一个GSP文件,我可以在其中设置样式,然后发送电子邮件。目前发送邮件功能如下:
def sendEmail(){
mailService.sendMail {
to "email","**email**"
from "email"
subject "Hi"
body 'Hi'
}
}
在我的config.groovy
文件中
grails {
mail {
host = "smtp.gmail.com"
port = 465
username = "email"
password = "pwd"
props = ["mail.smtp.auth":"true",
"mail.smtp.socketFactory.port":"465",
"mail.smtp.socketFactory.class":"javax.net.ssl.SSLSocketFactory",
"mail.smtp.socketFactory.fallback":"false"]
}
}
我经历了另一个Stack Overflow post:我应该在哪里添加邮件模板?它在views文件夹中?
sendMail{
multipart true
to "[hidden email]"
subject "Subject goes here"
html g.render( template: '/emails/mailTemplate')
inline 'springsourceInlineImage', 'image/jpg', new File('./web-app/images/springsource.png')
}
更新
我在 EMAILS / 下添加了一个mailTemplate.gsp但是它没有工作。
ERROR I GOT找不到名称[/ emails / mailTemplate]和路径[/emails/_mailTemplate.gsp]
的模板答案 0 :(得分:8)
您可以使用groovyPageRenderer.render()来解析您的电子邮件。下面是一个例子:
class MailingService {
def groovyPageRenderer
def mailService
def yourFunction(User user) {
def content = groovyPageRenderer.render(view: '/mails/myTemplate')
mailService.sendMail {
to user.email
from "email@test.com"
subject "MySubject"
html(content)
}
}
}
在这种情况下,模板位于:/views/mails/MyTemplateFile.gsp
希望这有帮助。
修改强> 渲染可以与模型一起使用。例如:
groovyPageRenderer.render(view:'/mails/myTemplate',model:[user:user])
<强> EDIT2:强> 我忘记在第一次回复中添加mailService
答案 1 :(得分:5)
好吧,你可以试试这段代码......
mailService.sendMail {
to user.email
from "email@test.com"
subject "MySubject"
body(view:'/emails/mailTemplate', model: [a:A])
}
此处mailTemplate.gsp
位于view/emails
。在邮件服务体中,您可以使用呈现语法。
然后在'<%@ page contentType="text/html" %>'
mailTemplate.gsp
答案 2 :(得分:1)
好好看看你的代码,一切看起来都不错。
html g.render(template : '/path/to/template')
应该呈现您的模板,它将成为您邮件的正文。
您是否确保将模板设为_template
。由于所有以(_)
开头的gsp仅被视为模板。
您还应该将所有样式(css)内联,以便在所有邮件提供程序中呈现它而不会出错。