为电子邮件实施Spring Boot服务

时间:2018-08-31 09:50:38

标签: java spring-boot

我想创建将在应用程序中使用的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
    }
}

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

1 个答案:

答案 0 :(得分:2)

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

将此内容添加到pom.xml的依赖项中(如果尚未添加):

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
    <version>2.0.4.RELEASE</version>
</dependency>

如果使用gradle,请将其添加到build.gradle

compile group: 'org.springframework.boot', name: 'spring-boot-starter-mail', version: '2.0.4.RELEASE'

这是您需要的配置。您将此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注释的类({{1},@Service@Controller )并开始发送电子邮件:

@Repository