Skip to content

Instantly share code, notes, and snippets.

@vahidhedayati
Created March 26, 2023 19:59
Show Gist options
  • Save vahidhedayati/69f61e99e5e1bc03f92b8cf263ef6f8a to your computer and use it in GitHub Desktop.
Save vahidhedayati/69f61e99e5e1bc03f92b8cf263ef6f8a to your computer and use it in GitHub Desktop.
EmailConfig
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;
}
}
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