Created
March 26, 2023 19:59
-
-
Save vahidhedayati/69f61e99e5e1bc03f92b8cf263ef6f8a to your computer and use it in GitHub Desktop.
EmailConfig
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class EmailService { | |
public void sendEmail( | |
if (siteConfig != null) { | |
mailSender(siteConfig).send(mimeMessage); | |
} else { | |
this.javaMailSender.send(mimeMessage); | |
} | |
} | |
/* | |
* Using this method, configuration is updated on the fly when any change happens on DB | |
*/ | |
public JavaMailSender mailSender(SiteConfig siteConfig) { | |
JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); | |
mailSender.setHost(siteConfig.getSmtpHost()); | |
mailSender.setPort(siteConfig.getSmtpPort()); | |
mailSender.setUsername(siteConfig.getSmtpUsername()); | |
mailSender.setPassword(siteConfig.getSmtpPassword()); | |
Properties props = System.getProperties(); | |
props.put("mail.transport.protocol", "smtp"); | |
props.put("mail.smtp.auth", siteConfig.isSmtpAuth()); | |
props.put("mail.smtp.starttls.enable", siteConfig.isSmtpStartTlsEnable()); | |
props.put("mail.debug", siteConfig.isSmtpDebug()); | |
mailSender.setJavaMailProperties(props); | |
return mailSender; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.solution.config; | |
import com.example.solution.entity.SiteConfig; | |
import com.example.solution.service.SiteConfigService; | |
import org.springframework.boot.context.properties.ConfigurationProperties; | |
import org.springframework.context.annotation.Bean; | |
import org.springframework.context.annotation.Configuration; | |
import org.springframework.mail.javamail.JavaMailSender; | |
import org.springframework.mail.javamail.JavaMailSenderImpl; | |
import java.util.Properties; | |
/* | |
* This is a configuration file which overrides SMTP configuration at start up of application | |
*/ | |
@Configuration | |
@ConfigurationProperties | |
public class EmailConfig { | |
private final SiteConfigService siteConfigService; | |
public EmailConfig(SiteConfigService siteConfigService) { | |
this.siteConfigService = siteConfigService; | |
} | |
@Bean | |
public JavaMailSender getJavaMailSender() { | |
JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); | |
SiteConfig siteConfig = siteConfigService.findByName("main"); | |
if (siteConfig != null) { | |
// Set up Gmail config | |
mailSender.setHost(siteConfig.getSmtpHost()); | |
mailSender.setPort(siteConfig.getSmtpPort()); | |
mailSender.setUsername(siteConfig.getSmtpUsername()); | |
mailSender.setPassword(siteConfig.getSmtpPassword()); | |
Properties props = mailSender.getJavaMailProperties(); | |
props.put("mail.transport.protocol", "smtp"); | |
props.put("mail.smtp.auth", siteConfig.isSmtpAuth()); | |
props.put("mail.smtp.starttls.enable", siteConfig.isSmtpStartTlsEnable()); | |
props.put("mail.debug", siteConfig.isSmtpDebug()); | |
return mailSender; | |
} | |
return null; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment