Grails Mail插件sendMail挂钩

时间:2016-01-08 08:10:49

标签: grails grails-plugin

有没有办法挂钩grails Mail plugin$PATH方法并修改正文?我需要在使用插件发送的每封电子邮件中插入类似签名的内容。

我想我可以在每个电子邮件模板中添加一个include gsp但是......呃:) 还有另一种(懒惰的)方法吗?

由于

2 个答案:

答案 0 :(得分:1)

你为什么需要一个钩子?为什么不创建自己的textParsing方案并允许它为您的邮件文本添加签名,并且您可以拥有所需数量的解析实例。它与邮件无关。

基本字符串操作和代码可重用性技术应该是必要的。

编辑: 你虽然回答了自己,即使用gsp模板或任何模板api,如thymleaf或sitemesh。

另一种更基本的技术可能是解析一些文本,说你要添加签名和用户名。

示例

Hello #username#

mail_content

#signature#

现在,您可以使用String.replaceAll并替换为必需的值。

但是肯定java mail api默认不提供这样的钩子。

如果你熟悉spring和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应该帮助你

答案 1 :(得分:1)

如果将方法封装在用于发送邮件的服务中,则可以将签名附加到电子邮件正文。

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()
        }
    }