在运行时更改邮件配置

时间:2013-05-16 23:23:07

标签: spring email grails

我刚刚开始调查grails框架,我正在尝试解决的第一项任务是发送电子邮件。基本教程和社区答案提供了很多快速入门的信息,是的,我创建了简单的应用程序,可以发送电子邮件。但是,我的调查的下一点是在运行时更改邮件配置。所以,首先我在Config.grovy中的配置是

grails {
    mail {
        host = ""
        port = 0
        username = ""
        password = ""
        props = [""]
    }
}

带有值,并且所有工作都是corectlly,之后我尝试重新配置它 像那样

grailsApplication.config.grails.mail.host = "smtp.gmail.com"
grailsApplication.config.grails.mail.port = 465
grailsApplication.config.grails.mail.username = ""

控制器,发现邮件是从旧地址发送的,经过调试我发现在mailSender这样的邮件插件中有自动连线实例,一个明显的解决方案是重新创建mailSender并重新设置它,但是判断Spring单例策略将是难以解决的问题,因此,我的问题是否有可能在没有类重新加载的情况下在运行时重新配置邮件?

感谢。

1 个答案:

答案 0 :(得分:2)

修复了使用重新初始化mailsender实例但等待其他解决方案的问题,谢谢

mailSender.setHost("smtp.gmail.com")
mailSender.setPort(465)
mailSender.setJavaMailProperties(new Properties() {
    {
        put("mail.smtp.auth", "true");
        put("mail.smtp.socketFactory.port", "465");
        put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        put("mail.smtp.socketFactory.fallback", "false");
    }
})