Assim como aconteceu na aula 08, estou tendo um erro 500 após a tentativa de envio de e-mail ao finalizar o pedido no carrinho. Alguém sabe o motivo do erro e como corrigir?
Obrigado.
Assim como aconteceu na aula 08, estou tendo um erro 500 após a tentativa de envio de e-mail ao finalizar o pedido no carrinho. Alguém sabe o motivo do erro e como corrigir?
Obrigado.
oi eulen,
manda a exception completa do erro, o código que envia o email também por favor.
OI Caio, desculpa não é exatamente uma exception, até pq nao aparece nenhum erro no console e tambem nenhuma stacktrace. So obtenho a página com erro 500 do tomcat após alguns segundos de inatividade. É o mesmo caso que ocorreu durante a aula com o instrutor. Porém não vi ele resolvendo durante o curso e também nada consta nas anotações da aula.
Abaixo o código. Obrigado
No controller
@SuppressWarnings("finally")
@RequestMapping(value = "/finalizar", method = RequestMethod.POST)
public Callable<ModelAndView> finalizar(@AuthenticationPrincipal Usuario usuario, RedirectAttributes model) {
return () -> {
String uri = "http://book-payment.herokuapp.com/payment";
try {
String response = restTemplate.postForObject(uri, new DadosPagamento(carrinho.getTotal()),
String.class);
model.addFlashAttribute("sucesso", response);
// envia email para o usuário
enviaEmailCompraProduto(usuario);
System.out.println(response);
} catch (HttpClientErrorException e) {
e.printStackTrace();
model.addFlashAttribute("falha", "Valor maior que o permitido");
} catch (Exception e){
e.printStackTrace();
}finally {
return new ModelAndView("redirect:/produtos");
}
};
}
private void enviaEmailCompraProduto(Usuario usuario) {
SimpleMailMessage email = new SimpleMailMessage();
email.setSubject("Compra finalizada com sucesso");
//email.setTo(usuario.getEmail());
email.setTo("eulen.mesquita@gmail.com");
email.setText("Compra aprovada com sucesso no valor de " + carrinho.getTotal());
email.setFrom("compras@casadocodigo.com.br");
sender.send(email);
}
no AppWebConfig
@Bean
public MailSender mailSender(){
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("smtp.gmail.com");
mailSender.setUsername("eulen.mesquita@gmail.com");
mailSender.setPassword("xxxxxxx");
mailSender.setPort(587);
Properties mailProperties = new Properties();
mailProperties.put("mail.smtp.auth", true);
mailProperties.put("mail.smtp.starttls.enable", true);
mailSender.setJavaMailProperties(mailProperties);
return mailSender;
}
Não consegui descobrir a razão do erro 500, mas resolvi tentar utilizar o envio de e-mail do cuso de Spring Boot do Lárazo e funcionou direitinho. Consegui receber o e-mail e o fluxo da aplicação seguiu perfeitamente.
Obrigado pela atenção, abraço a todos.
private void enviaEmailCompraProduto(Usuario usuario) {
try {
Email email = new SimpleEmail();
email.setHostName("smtp.googlemail.com");
email.setSmtpPort(465);
email.setAuthenticator(new DefaultAuthenticator("user", "senha"));
email.setSSLOnConnect(true);
email.setFrom("contato@bigminds.io");
email.setSubject("Sua compra na CasaDoCodigo foi aprovada");
email.setMsg("Compra aprovada com sucesso no valor de " + carrinho.getTotal());
//email.addTo(usuario.getEmail());
email.addTo("eulen.mesquita@gmail.com");
email.send();
} catch (EmailException e) {
e.printStackTrace();
}
}
Biblioteca de email da Apache:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.4</version>
</dependency>