Search code examples
emailgrailsconfiguration

Grails mail plugin runtime configuration


Using grails mail plugin 1.0.7.

https://jira.grails.org/browse/GPMAIL-36 states that it's possible to change plguin configuration since 1.0.1 at runtime. Sadly it does not explains how to achieve it.

I want to be able to change the username at runtime to be able to use different mail accounts.

Thanks.


Solution

  • Based on this code, you should be able to change the configuration at runtime and the mail plugin will automagically re-deploy and update mail sender based on your changes.

    Example:

    Holders.config.grails.mail.username = 'foo'
    Holders.config.grails.mail.password = 'bar'
    sendMail {
        to "foo@bar.com"
        from "bar@foo.com"
        subject "Hi"
        body "This is an email"
    } 
    

    Update:

    It would appear that changing the configuration in this manner does not, in fact, fire the onConfigChange event. Per this, you can fire the event manually. Something like this:

    Holders.pluginManager.getGrailsPlugin('mail').notifyOfEvent(GrailsPlugin.EVENT_ON_CONFIG_CHANGE, Holders.config)