有没有办法挂钩到grails Mail plugin的sendMail
方法并修改正文文本?我需要在使用该插件发送的每封电子邮件中插入类似签名的内容。Grails Mail插件sendMail钩子
我想我可以添加包括gsp到每个电子邮件模板,但...唉:) 有没有另一种(懒惰)的方式来做到这一点?
谢谢
有没有办法挂钩到grails Mail plugin的sendMail
方法并修改正文文本?我需要在使用该插件发送的每封电子邮件中插入类似签名的内容。Grails Mail插件sendMail钩子
我想我可以添加包括gsp到每个电子邮件模板,但...唉:) 有没有另一种(懒惰)的方式来做到这一点?
谢谢
为什么你需要一个钩?为什么不创建自己的textParsing方案,并允许它向邮件文本添加签名,并且您可以拥有尽可能多的解析实例。它与邮件无关。
基本字符串操作和代码可重用性技术应该做必要的。
编辑: 你虽然回答自己,即通过使用gsp模板或任何模板api像thymleaf或sitemesh。
另一个更基本的技术可能是解析一些文本,说你想添加一个签名和用户名。
例如
Hello #username#
mail_content
#signature#
现在,在这里你可以使用String.replaceAll并与所需的值替换。
但肯定java邮件API默认情况下不提供这样的钩子。
如果您熟悉春AOP然后 最终的解决方案可能是:to use Spring Aspect Oriented Programming for intercepting any method and perform some tasks before/after or around it. I believe spring aspects should definitely help you out.
我从来没有尝试过使用Grails方面虽然。 This应该可以帮到你
如果你在发送邮件的服务中封装了一个方法,你可以在邮件正文中附加签名。
public send(String emailTo, String emailSubject, String emailBody, String emailFrom, String customSignature = "") {
String signature = customSignature?: "<p>Default signature</p>"
try {
mailService.sendMail {
from emailFrom
to emailTo
subject emailSubject
html (emailBody + signature)
}
} catch (Exception e) {
log.error('There was an error sending the email')
log.error e.getMessage()
}
}
我想拦截电子邮件,然后离开系统并添加一些文本。真的不想解析现有的文本。但即使我想这样做,我该怎么做呢? – aldrin
看到我上面的修改。 –
要小心Spring的问题,因为切入点要非常明智地使用和选择。 –