Spring 在运行时更改邮件配置

Spring 在运行时更改邮件配置,spring,email,grails,Spring,Email,Grails,我刚刚开始研究grails框架,我试图解决的第一个任务是发送电子邮件。基本教程和社区答案为快速入门提供了大量信息,是的,我创建了一个简单的应用程序,可以发送电子邮件。但是,我调查的下一点是在运行时更改邮件配置。因此,我在Config.grovy中的第一个配置是 grails { mail { host = "" port = 0 username = "" password = "" props = [""]

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

grails {
    mail {
        host = ""
        port = 0
        username = ""
        password = ""
        props = [""]
    }
}
有了值,一切都正常工作,之后我尝试重新配置它 那样

grailsApplication.config.grails.mail.host = "smtp.gmail.com"
grailsApplication.config.grails.mail.port = 465
grailsApplication.config.grails.mail.username = ""
控制器,发现邮件是从旧地址发送的,调试后我发现邮件插件中有自动连接的实例,如
mailssender
,一个明显的解决方案是重新创建
mailssender
,然后重新设置,但从Spring singleton策略来看,这将是一个很难解决的问题,所以,我的问题是,是否有可能在运行时重新配置邮件而不重新加载类


谢谢。

使用re init
mailssender
实例修复了此问题,但正在等待其他解决方案,谢谢

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");
    }
})

我认为预期的行为是插件的一项。2dmahapato,是的,你是对的,所以,将等待此功能的实现,在当前的测试项目中将使用我的解决方案,感谢您注意到其他解决方案了吗?如果在多线程环境中使用并发问题,这可能会导致问题吗?@Sergii Zagriichuk您在哪里重新初始化邮件发送者的?在发送邮件之前,它是否为您服务?