Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring:不接收电子邮件上的消息_Java_Spring_Spring Boot_Email_Dependency Injection - Fatal编程技术网

Java Spring:不接收电子邮件上的消息

Java Spring:不接收电子邮件上的消息,java,spring,spring-boot,email,dependency-injection,Java,Spring,Spring Boot,Email,Dependency Injection,我没有收到激活注册的电子邮件帐户消息。 在注册时,我在数据库中看到激活码,我可以登录,但我想向激活帐户发送电子邮件 我尝试更改端口并尝试更改“smtp”上的“smtps” 我的财产: spring.mail.host=smtp.gmail.com spring.mail.username=mymail@gmail.com spring.mail.password=mypass spring.mail.port=587 spring.mail.protocol= smtps spring.mail

我没有收到激活注册的电子邮件帐户消息。 在注册时,我在数据库中看到激活码,我可以登录,但我想向激活帐户发送电子邮件

我尝试更改端口并尝试更改“smtp”上的“smtps” 我的财产:

spring.mail.host=smtp.gmail.com
spring.mail.username=mymail@gmail.com
spring.mail.password=mypass
spring.mail.port=587
spring.mail.protocol= smtps
spring.mail.properties.mail.smtp.auth = true;
spring.mail.properties.mail.smtp.starttls.enable = true;
mail.debug= true
邮件配置:

@配置
公共类MailConfig{
@值(${spring.mail.host}”)
私有字符串主机;
@值(${spring.mail.username}”)
私有字符串用户名;
@值(${spring.mail.password}”)
私有字符串密码;
@值(${spring.mail.port}”)
专用int端口;
@值(${spring.mail.protocol}”)
私有字符串协议;
@值(“${mail.debug}”)
私有字符串调试;
@值(${spring.mail.properties.mail.smtp.auth}”)
私有字符串验证;
@值(${spring.mail.properties.mail.smtp.starttls.enable})
私有字符串启用;
@豆子
公共JavaMailSender JavaMailSender(){
JavaMailSenderImpl mailSender=新的JavaMailSenderImpl();
mailssender.setHost(主机);
mailssender.setPort(端口);
mailSender.setUsername(用户名);
设置密码(密码);
Properties=mailSender.getJavaMailProperties();
properties.setProperty(“mail.transport.protocol”,protocol);
setProperty(“mail.debug”,debug);
setProperty(“mail.smtp.auth”,auth);
setProperty(“mail.smtp.starttls.enable”,enable);
返回邮件发送者;
}
}
用户服务:

@服务
公共类UserService实现UserDetailsService{
私有最终用户存储库用户存储库;
私人最终邮件发送者;
公共用户服务(UserRepository UserRepository,MailSender MailSender){
this.userRepository=userRepository;
this.mailssender=mailssender;
}
@凌驾
public UserDetails loadUserByUsername(字符串用户名)引发UsernameNotFoundException{
返回userRepository.findByUsername(用户名);
}
公共布尔寄存器用户(用户){
User userFromDb=userRepository.findByUsername(User.getUsername());
if(userFromDb!=null){
返回false;
}
user.setActive(true);
user.setRoles(Collections.singleton(Role.user));
user.setActivationCode(UUID.randomUUID().toString());
userRepository.save(用户);
if(StringUtils.isEmpty(user.getEmail())){
String message=String.format(“您好,%s\n”+”欢迎使用毛衣。请访问链接:http://localhost:8080/activate/%s",
user.getUsername(),
user.getActivationCode()
);
mailssender.send(user.getEmail(),“激活码”,消息);
}
返回true;
}
公共布尔激活代码(字符串代码){
User=userRepository.findbyaActivationCode(代码);
if(user==null){
返回false;
}
user.setActivationCode(空);
userRepository.save(用户);
返回true;
}
}
控制器

@GetMapping(“/activate/{code}”)
公共字符串激活(模型模型,@PathVariable字符串代码){
布尔值isActivated=userService.activateCode(代码);
如果(已激活){
model.addAttribute(“信息”,“用户激活”);
}否则{
model.addAttribute(“信息”,“未找到激活码”);
}
返回“登录”;
}

@Autowired
邮件发送者

依赖注入:spring中的
@Autowired
注释自动将依赖bean注入到POJO类的关联引用中。此注释将通过匹配数据类型(即,在内部作为自动连接byType工作)来注入依赖bean。我们可以

  • @Autowired
    在属性上
  • setter方法上的@Autowired
  • @Autowired
    在构造器上(优于单独的现场自动布线)

    • @Autowired
      邮件发送者

      依赖注入:spring中的
      @Autowired
      注释自动将依赖bean注入到POJO类的关联引用中。此注释将通过匹配数据类型(即,在内部作为自动连接byType工作)来注入依赖bean。我们可以

      • @Autowired
        在属性上
      • setter方法上的@Autowired
      • @Autowired
        在构造器上(优于单独的现场自动布线)

      @Autowired
      邮件发送者@PatelRomil但为什么?我听说私有final+构造函数比Autowired好。但是当我把所有东西都改成自动连线时,它就工作了)
      @Autowired
      mailssender@PatelRomil但是为什么呢?我听说私有final+构造函数比Autowired好。但是当我把所有东西都改成自动连线时,它就工作了)所以我必须自动编写构造函数?因为我想,如果使用构造函数,那么我就不需要使用注释AutowiredYou可以自动连接构造和特定属性,这取决于我们,但拥有构造函数与依赖项注入无关。所以我必须自动编写构造函数?因为我认为,如果使用构造函数,那么我就不需要使用注释AutowiredYou可以自动连接构造和特定属性,这取决于我们,但拥有构造函数与依赖项注入无关。