【问题标题】:Spring boot send e-mail API RESTSpring Boot 发送邮件 API REST
【发布时间】:2020-11-26 11:14:57
【问题描述】:

我正在尝试创建 API 休息来发送电子邮件 但我面临这个错误:

**cold not autowire no bean of 'javaMailSender' type found **

邮件模型.java

@Data
public class Mail {
    private String name;
    private String email;
    private String subject;
    private String message;
}

这是我的 MailService.java

@Service
public class MailService {
    private JavaMailSender javaMailSender;
    @Autowired
    public MailService(JavaMailSender javaMailSender) {
        this.javaMailSender = javaMailSender;

    }

    public void sendEmail(Mail usermodel) throws MailException {

        StringBuilder sb = new StringBuilder();
        sb.append("Name: ").append(usermodel.getName()).append(System.lineSeparator());
        sb.append("\n Message: ").append(usermodel.getMessage());

        SimpleMailMessage mail = new SimpleMailMessage();

        mail.setTo(usermodel.getEmail());
        mail.setFrom("emailremoved@gmail.com");
        mail.setSubject(usermodel.getMessage());
        mail.setText(sb.toString());

        javaMailSender.send(mail);
    }

}

EmailController.java

@RestController
@RequestMapping("/api/v1/email")
public class EmailController {
    @Autowired
    private MailService mailService;

    //some other code

    @PostMapping()
    public ResponseEntity<Mail> enviarEmail(Mail email){
        try {
            mailService.sendEmail(email);
            return new ResponseEntity<>(email,  HttpStatus.OK);
        } catch( MailException e){
            return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR);
        }


    }
}

感谢您的回复

【问题讨论】:

    标签: java angular spring-boot email


    【解决方案1】:

    您缺少 javax.mail 依赖项。 将此添加到 pom.xml

      <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4.7</version>
      </dependency>
    

    【讨论】:

      【解决方案2】:

      您是否将正确的依赖项导入到您的 pom.xml 中?

      我已经为我的项目导入了这个并且它正在工作:

      <dependency>
          <groupId>com.sun.mail</groupId>
          <artifactId>javax.mail</artifactId>
          <version>1.6.2</version>
      </dependency>
      

      【讨论】:

        【解决方案3】:

        尝试将此 Java 邮件 API 和 javax.activation 依赖项添加到您的 pom.xml 中

        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
          </dependency>
        
        
        <!-- https://mvnrepository.com/artifact/javax.activation/activation -->
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>1.1.1</version>
        </dependency>
        
        

        【讨论】:

          【解决方案4】:

          我认为您没有配置电子邮件发件人。

          你应该做的是使用这个 bean 创建配置文件,如下所示:

          @Configuration
          public class EmailConfig {
              @Bean
              public JavaMailSender javaMailSender() 
              {
                  JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
                  mailSender.setHost("smtp.gmail.com");
                  mailSender.setPort(25);
                    
                  mailSender.setUsername("admin@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;
              }
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-01-11
            • 2021-10-23
            • 1970-01-01
            • 1970-01-01
            • 2021-07-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多