外部化Grails中的Mail插件的属性

时间:2014-09-08 07:02:36

标签: email grails groovy configuration-files

我希望Grails'Mail插件从类路径中的外部属性文件中读取配置属性。我在Config.groovy中添加了这一行,

grails.config.locations = [
            "classpath:app-${grails.util.Environment.current.name}-config.properties"]

我已将属性放在该文件中,

grails.mail.host = smtp.gmail.com
grails.mail.port = 465
grails.mail.username = username
grails.mail.password = password

这一切都很好。问题是,Mail插件需要一个Map类型的属性。如果我们把这个属性放在Config.groovy中,我看起来像这样,

grails {
    mail {
        props = ["mail.smtp.auth"                  : "true",
                 "mail.smtp.socketFactory.port"    : "465",
                 "mail.smtp.socketFactory.class"   : "javax.net.ssl.SSLSocketFactory",
                 "mail.smtp.socketFactory.fallback": "false"]
    }
}

现在如果我把它放在外部文件中,如下,

grails.mail.props = ["mail.smtp.auth"                  : "true",
                     "mail.smtp.socketFactory.port"    : "465",
                     "mail.smtp.socketFactory.class"   : "javax.net.ssl.SSLSocketFactory",
                     "mail.smtp.socketFactory.fallback": "false"]

比它不起作用。我需要从外部文件中读取道具地图。我搜索了很多但是徒劳无功。感谢帮助。

1 个答案:

答案 0 :(得分:4)

您可以从外部*.groovy文件加载配置,您可以在Config.groovy中添加地图等。创建示例mail-config.groovy,其内容如下:

grails {
    mail {
        host = smtp.gmail.com
        port = 465
        username = username
        password = password
        props = ["mail.smtp.auth"                  : "true",
                 "mail.smtp.socketFactory.port"    : "465",
                 "mail.smtp.socketFactory.class"   : "javax.net.ssl.SSLSocketFactory",
                 "mail.smtp.socketFactory.fallback": "false"]
    }
}

并指出Grails使用它:

grails.config.locations = ["classpath:mail-config.groovy"]