Spring boot send e-mail API REST - PullRequest
       91

Spring boot send e-mail API REST

1 голос
/ 06 августа 2020

Я пытаюсь создать API-интерфейс для отправки электронной почты, но я столкнулся с этой ошибкой:

** холодный, не автосоединение, bean-компонент типа 'javaMailSender' не найден **

Модель почты. 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);
        }


    }
}

спасибо за ваш ответ

Ответы [ 4 ]

0 голосов
/ 06 августа 2020

Я думаю, вы не настроили отправитель электронной почты.

вам нужно создать файл конфигурации с этим 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;
    }
}
0 голосов
/ 06 августа 2020

Вы импортировали правильную зависимость в свой pom. xml?

Я импортировал это для своего проекта, и он работает:

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.2</version>
</dependency>
0 голосов
/ 06 августа 2020

попробуйте добавить этот 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>

0 голосов
/ 06 августа 2020

Отсутствует зависимость от javax.mail. Добавьте это в pom. xml

  <dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
  </dependency>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...