Spring Bean用于发送电子邮件

时间:2017-11-06 20:38:58

标签: java spring

我需要创建一个具有以下结构的bean:

@Bean
public JavaMailSender getSender() {
   JavaMailSender jms = new JavaMailSenderImpl();

   // here I need somehow to set up to object sender's email, password, subject, port ...

   return jms;
}

当我从上下文中获取bean时,我需要设置对象以及除了body内容之外的所有属性,我将设置它。是否可以这样做,如果是这样的话?

1 个答案:

答案 0 :(得分:0)

Spring的JavaMailSender接口不会强制实现提供主机,端口和其他SMTP信息。但是,implementing class JavaMailSenderImpl之一提供了这些方法。

所有,您需要做的是将变量jms的类型更改为JavaMailSenderImpl,调用setter然后返回它。

@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 (JavaMailSender)mailSender;
}