Java 为电子邮件实现Spring引导服务

Java 为电子邮件实现Spring引导服务,java,spring-boot,Java,Spring Boot,我想创建Spring引导服务,该服务将用于应用程序: 具有SNMTP服务器配置的主类: public class MailConfiguration { public MailConfiguration() { // TODO add configuration for SNMP server } } 每种情况下具有特定主体的类: public class NewUserNotifier extends MailConfiguration{ publ

我想创建Spring引导服务,该服务将用于应用程序:

具有SNMTP服务器配置的主类:

public class MailConfiguration {

    public MailConfiguration() {
        // TODO add configuration for SNMP server
    }
}
每种情况下具有特定主体的类:

public class NewUserNotifier extends MailConfiguration{

    public void sendNewUserNotifier() {
        // TODO Implement here logic
    }
}

public class TransactionLimitsNotifier extends MailConfiguration {

    public void sendTransactionLimitsNotifier() {
        // TODO Implement here logic
    }
}

如何实现Spring服务,当我可以使用一个主类来配置我所需时,我可以使用@Autowire调用它?

您不需要扩展包含电子邮件配置的类。您只需在其中创建一个方法并用
@Bean
对其进行注释,然后spring将在使用
@Autowired
调用它的任何地方注入它的实例

在pom.xml中添加此依赖项(如果尚未添加):

这是您需要的配置。将此bean添加到具有
@Configuration
注释的类中:

@Bean
public JavaMailSender getJavaMailSender() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("smtp.gmail.com");
mailSender.setPort(587);

mailSender.setUsername("my.gmail@gmail.com");
mailSender.setPassword("password");     
Properties props = mailSender.getJavaMailProperties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.debug", "true");     
return mailSender;
}
然后,要发送电子邮件,您需要将
JavaMailSender
注入到一个带有
@Component
注释的类中(
@Service
@Controller
@Repository
都是组件),然后开始发送电子邮件:

@Autowired
public JavaMailSender emailSender;

public void sendSimpleMessage(
  String to, String subject, String text) {
    SimpleMailMessage message = new SimpleMailMessage(); 
    message.setTo(to); 
    message.setSubject(subject); 
    message.setText(text);
    emailSender.send(message);
}

请参阅文章Spring Boot Freemarker电子邮件模板
@Bean
public JavaMailSender getJavaMailSender() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("smtp.gmail.com");
mailSender.setPort(587);

mailSender.setUsername("my.gmail@gmail.com");
mailSender.setPassword("password");     
Properties props = mailSender.getJavaMailProperties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.debug", "true");     
return mailSender;
}
@Autowired
public JavaMailSender emailSender;

public void sendSimpleMessage(
  String to, String subject, String text) {
    SimpleMailMessage message = new SimpleMailMessage(); 
    message.setTo(to); 
    message.setSubject(subject); 
    message.setText(text);
    emailSender.send(message);
}