2016-11-04 48 views
1

我得到下面提到的异常,而试图采用弹簧启动电子邮件功能:org.springframework.mail.MailSendException:失败的信息:显示java.lang.NullPointerException

Caused by: org.springframework.mail.MailSendException: Failed messages: java.lang.NullPointerException 

这是我邮件配置类:

@Configuration 
public class MailConfiguration { 

    private final MailProperties mailProperties; 

    @Autowired 
    public MailConfiguration (MailProperties mailProperties) { 
     this.mailProperties = mailProperties; 
    } 

    @Bean 
    public JavaMailSender javaMailSender() { 
     JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); 
     Properties properties = new Properties(); 
     properties.put("mail.smtp.auth", mailProperties.getSmtp().isAuth()); 
     properties.put("mail.smtp.starttls.enable", mailProperties.getSmtp().isStarttlsEnable()); 
     mailSender.setJavaMailProperties(properties); 
     mailSender.setHost(mailProperties.getHost()); 
     mailSender.setPort(mailProperties.getPort()); 
     mailSender.setProtocol(mailProperties.getProtocol()); 
     mailSender.setUsername(mailProperties.getUsername()); 
     mailSender.setPassword(mailProperties.getPassword()); 
     return mailSender; 
    } 
} 

这是邮件属性类:

@Configuration 
@ConfigurationProperties(prefix = "mail", locations = "classpath:mail.properties") 
public class MailProperties { 

    public static class Smtp { 
     private boolean auth; 
     private boolean starttlsEnable; 

     public boolean isAuth() { 
      return auth; 
     } 

     public void setAuth (boolean auth) { 
      this.auth = auth; 
     } 

     public boolean isStarttlsEnable() { 
      return starttlsEnable; 
     } 

     public void setStarttlsEnable (boolean starttlsEnable) { 
      this.starttlsEnable = starttlsEnable; 
     } 
    } 

    @NotBlank 
    private String host; 
    private int port; 
    private String from; 
    private String username; 
    private String password; 
    private String protocol; 

    @NotNull 
    private Smtp smtp; 

    public String getHost() { 
     return host; 
    } 

    public void setHost (String host) { 
     this.host = host; 
    } 

    public int getPort() { 
     return port; 
    } 

    public void setPort (int port) { 
     this.port = port; 
    } 

    public String getFrom() { 
     return from; 
    } 

    public void setFrom (String from) { 
     this.from = from; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername (String username) { 
     this.username = username; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword (String password) { 
     this.password = password; 
    } 

    public Smtp getSmtp() { 
     return smtp; 
    } 

    public void setSmtp (Smtp smtp) { 
     this.smtp = smtp; 
    } 

    public String getProtocol() { 
     return protocol; 
    } 

    public void setProtocol (String protocol) { 
     this.protocol = protocol; 
    } 
} 

这是邮件服务类

public class MailServiceImpl implements MailService { 

    private final JavaMailSender javaMailSender; 

    private static final Logger log = LoggerFactory.getLogger(MailServiceImpl.class); 

    @Autowired 
    public MailServiceImpl (JavaMailSender javaMailSender) { 
     this.javaMailSender = javaMailSender; 
    } 


    @Override 
    public void send (String receiver, String sender, String message, String filenameAndLocation) { 
     SimpleMailMessage msg = new SimpleMailMessage(); 
     msg.setText(receiver); 
     msg.setFrom(sender); 
     msg.setText(message); 
     msg.setSubject("testing subject"); 
     javaMailSender.send(msg); 
    } 
} 

我只是试着这样调用方法:mailService.send( “[email protected]”, “[email protected]” , “测试一下”);

+0

请加满的堆栈跟踪(或原因行号部分) –

+0

感谢,但我已经发现了这个问题。 –

回答

0

我的邮箱服务类是不正确的,这是正确的:

@Service 
public class MailServiceImpl implements MailService { 

    private final JavaMailSender javaMailSender; 

    private static final Logger log = LoggerFactory.getLogger(MailServiceImpl.class); 

    @Autowired 
    public MailServiceImpl (JavaMailSender javaMailSender) { 
     this.javaMailSender = javaMailSender; 
    } 


    @Override 
    public void send (String receiver, String sender, String message, String filenameAndLocation) { 
     MimeMessagePreparator preparator = new MimeMessagePreparator() { 
      @Override 
      public void prepare (MimeMessage mimeMessage) throws Exception { 
       MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage); 
       messageHelper.setTo(receiver); 
       messageHelper.setFrom(sender); 
       messageHelper.setSubject("test subject"); 
       messageHelper.setText(message); 
      } 
     }; 
     this.javaMailSender.send(preparator); 
    } 
} 
相关问题