javax.mail.NoSuchProviderException:没有$ {mail.protocol}的提供者

时间:2017-10-03 09:56:53

标签: java spring

我想发送邮件给用户重置密码,如果他忘记密码我会收到此错误:

  

org.springframework.mail.MailSendException:邮件服务器连接   失败;嵌套异常是javax.mail.NoSuchProviderException:没有   $ {mail.protocol}的提供者。消息失败:   javax.mail.NoSuchProviderException:没有$ {mail.protocol}的提供者;   消息异常详情(1)是:

这是我的MailConfiguration.java;

public class MailConfiguration {

@Value("${mail.protocol}")
private String protocol;

@Value("${mail.host}")
private String host;

@Value("${mail.from}")
private String from;

@Value("${mail.username}")
private String username;

@Value("${mail.password}")
private String password;


@Bean
public JavaMailSender javaMailSender() {
    JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
    Properties mailProperties = new Properties();
    mailProperties.put(false, auth);
    mailProperties.put(false, starttls);
    mailSender.setJavaMailProperties(mailProperties);
    mailSender.setHost(host);
    mailSender.setPort(465);
    mailSender.setProtocol(protocol);
    mailSender.setUsername(username);
    mailSender.setPassword(password);
    return mailSender;
}
}

这是我的EmailConfig.properties:

mail.protocol=smtp
mail.host=localhost
mail.port=465
mail.smtp.auth=false
mail.smtp.starttls.enable=false
mail.from=me@localhost
mail.username=   
mail.password=

任何帮助提前致谢。

1 个答案:

答案 0 :(得分:1)

看来,您没有正确连接EmailConfig.properties,因为没有从中读取mailProtocol。

确保配置类中的@PropertySource具有属性文件的有效路径(即“classpath:EmailConfig.properties”)