복붙노트

[SPRING] 런타임에서 메일 구성 변경

SPRING

런타임에서 메일 구성 변경

난 그냥 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 = ""

컨트롤러에서, 그리고 그 메일은 디버그 후 오래된 주소에서 보내는 것으로 나타났습니다 나는 거기에 자동으로 유선 인스턴스가 mailSender와 같은 하나의 명백한 솔루션을 발견했습니다 mailSender를 재현하고 그것을 다시 설정하지만 스프링 싱글 톤 정책 그것은 어려운 해결책이 될 것입니다, 그래서, 내 질문 클래스를 다시로드하지 않고 런타임에 메일을 다시 구성 할 수 있습니까?

감사.

해결법

  1. ==============================

    1.재 초기화 메일 발신자 인스턴스를 사용하여 수정되었지만 다른 솔루션을 기다리는 중 감사합니다.

    재 초기화 메일 발신자 인스턴스를 사용하여 수정되었지만 다른 솔루션을 기다리는 중 감사합니다.

    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");
        }
    })
    
  2. from https://stackoverflow.com/questions/16599078/changing-mail-configuration-in-runtime by cc-by-sa and MIT license