我有一種情況,我想在環境 1 中使用 Gmail SMTP,在環境 2 中使用 Amazon SES 來發送電子郵件。我知道如何單獨實作這些,但不能讓它同時適用于這兩種方式,我不必為不同的環境進行特殊設定。
我正在努力解決的問題是,對于 Gmail SMTP,屬性是在 application.properties 檔案中定義的,我正在使用如下所示的自動配置
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=myEmail
spring.mail.password=myPassword
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
但是對于 SES,我正在定義配置 bean,如下所示 -
@Configuration
public class EmailConfig {
@Bean
public AmazonSimpleEmailService amazonSimpleEmailService() {
return AmazonSimpleEmailServiceClientBuilder.standard()
.build();
}
@Bean
public JavaMailSender javaMailSender(AmazonSimpleEmailService amazonSimpleEmailService) {
return new SimpleEmailServiceJavaMailSender(amazonSimpleEmailService);
}
}
我努力了:
- 找到一種在我的 env2 的 application.properties 中定義 SES 電子郵件配置的方法,但無法使其作業,因為此配置使用 IAM 角色發送電子郵件。您在上面看到的配置類是我所擁有的以及發送電子郵件所需的全部。(沒有密鑰,訪問密鑰)。
- 找到一種通過配置類定義我的 env1 屬性的方法,并使用兩個 applicaiton.properties 檔案中定義的“環境”屬性在不同的環境中創建不同的 JavaMailSender 物件,但我也無法使其作業,因為我不知道如何設定我的 JavaMailSenderImpl 物件上的 spring.mail.properties.mail.smtp.starttls.enabl 和 spring.mail.properties.mail.smtp.auth 等屬性。
我知道我為此苦苦掙扎的原因是我缺乏技能。請幫助我獲得一些。任何實作預期結果的有效解決方案將不勝感激。謝謝你。
uj5u.com熱心網友回復:
在這種情況下,spring boot 注解ConditionalOnProperty就派上用場了。定義新的屬性電子郵件提供商型別并使用該屬性來驅動要創建的 bean
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/439931.html
