【问题标题】:Changing mail configuration in runtime在运行时更改邮件配置
【发布时间】:2013-05-16 23:23:06
【问题描述】:

我刚刚开始研究 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 = ""

来自 controller,发现邮件是从旧地址发送的,经过调试后我发现邮件插件中有自动连接的实例,例如 mailSender,一个明显的解决方案是重新创建 @ 987654326@ 并重新设置它,但根据 Spring 单例策略判断这将是一个困难的解决方案,所以,我的问题是否有可能在运行时重新配置邮件而无需重新加载类?

谢谢。

【问题讨论】:

  • 我认为预期的行为是插件的TODO 项目之一。
  • 2dmahapato,是的,你是对的,所以,将等待此功能的实现,在当前的测试项目中将使用我的解决方案,谢谢

标签: spring email grails


【解决方案1】:

已使用 re-init 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");
    }
})

【讨论】:

  • 您是否注意到其他解决方案?
  • 如果在多线程环境中使用并发问题会导致问题吗?
  • @Sergii Zagriichuk 你在哪里重新初始化了mailSender?在发送邮件之前它在您的服务中吗?
  • 如何重新初始化邮件发送者?请显示代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-09
  • 1970-01-01
  • 2011-01-28
  • 2017-02-09
  • 2015-12-12
  • 2013-09-25
相关资源
最近更新 更多